每周轮换日志,日志名称中有周数
Rotate logs weekly with a week number in the log's name
我正在设置 logrotate
并想每周轮换一些日志,最好是在星期一,并将它们的名称更改为 example-%year%.w%weeknumber%
,其中 %weeknumber%
是给定年份的一周。
通过将类似于 logrotate.cron 的文件添加到 /etc/cron.daily/
,我的配置的 logrotate 将每天 运行。我的 logrotate 配置如下所示:
rotate 12
dateext
nocompress
/var/logs/example* {
weekly
dateformat .%Y-w%W
}
配置中的%W
是基于strftime格式的。但是,运行测试 logrotate -df /etc/logrotate.d/myconf.conf
结果如下:
(...)
considering log /var/logs/example
Creating new state
Now: 2020-04-23 00:18
Last rotated at 2020-04-23 00:00
log needs rotating
rotating log /var/logs/example, log->rotateCount is 12
Converted ' .%Y-w%W' -> '.%Y-w%%W'
dateext suffix '.2020-w%W'
glob pattern '.[0-9][0-9][0-9][0-9]-w%W'
glob finding old rotated logs failed
renaming /var/logs/example to /var/logs/example.2020-w%W
(...)
这意味着,我会用 %W
代替周数。当放置 %U
而不是 %W
.
时也会发生同样的情况
我正在使用 logrotate 3.11.0,因为它是我要设置它的机器上 zypper
提供的最新版本。
如何让 logrotate
在重命名日志文件时使用实际周数?
使用 %V
而不是 %U
或 %W
对我有用。
rotate 12
dateext
nocompress
/var/logs/example* {
weekly
dateformat .%Y-w%V
}
根据 strftime
的手册页:
%V The ISO 8601 week number (see NOTES) of the current year as a decimal number, range 01 to 53, where week 1 is the first week that has at least 4 days in the new year. See also %U and %W. (Calculated from tm_year, tm_yday, and tm_wday.)
此外,根据 man entry for 3.11.0(我在问这个问题之前不知何故错过了):
Only %Y %m %d %H %M %S %V and %s specifiers are allowed.
%V
本身是在 3.9.0 中添加的。
虽然这个问题涉及旧版本的 logrotate,但请尽可能使用最新版本。
我正在设置 logrotate
并想每周轮换一些日志,最好是在星期一,并将它们的名称更改为 example-%year%.w%weeknumber%
,其中 %weeknumber%
是给定年份的一周。
通过将类似于 logrotate.cron 的文件添加到 /etc/cron.daily/
,我的配置的 logrotate 将每天 运行。我的 logrotate 配置如下所示:
rotate 12
dateext
nocompress
/var/logs/example* {
weekly
dateformat .%Y-w%W
}
配置中的%W
是基于strftime格式的。但是,运行测试 logrotate -df /etc/logrotate.d/myconf.conf
结果如下:
(...)
considering log /var/logs/example
Creating new state
Now: 2020-04-23 00:18
Last rotated at 2020-04-23 00:00
log needs rotating
rotating log /var/logs/example, log->rotateCount is 12
Converted ' .%Y-w%W' -> '.%Y-w%%W'
dateext suffix '.2020-w%W'
glob pattern '.[0-9][0-9][0-9][0-9]-w%W'
glob finding old rotated logs failed
renaming /var/logs/example to /var/logs/example.2020-w%W
(...)
这意味着,我会用 %W
代替周数。当放置 %U
而不是 %W
.
我正在使用 logrotate 3.11.0,因为它是我要设置它的机器上 zypper
提供的最新版本。
如何让 logrotate
在重命名日志文件时使用实际周数?
使用 %V
而不是 %U
或 %W
对我有用。
rotate 12
dateext
nocompress
/var/logs/example* {
weekly
dateformat .%Y-w%V
}
根据 strftime
的手册页:
%V The ISO 8601 week number (see NOTES) of the current year as a decimal number, range 01 to 53, where week 1 is the first week that has at least 4 days in the new year. See also %U and %W. (Calculated from tm_year, tm_yday, and tm_wday.)
此外,根据 man entry for 3.11.0(我在问这个问题之前不知何故错过了):
Only %Y %m %d %H %M %S %V and %s specifiers are allowed.
%V
本身是在 3.9.0 中添加的。
虽然这个问题涉及旧版本的 logrotate,但请尽可能使用最新版本。