logrotate
考虑目录及其所有子目录中的日志文件? (即,没有明确列出子目录。)#1 楼
您的子目录有多深?/var/log/basedir/*.log /var/log/basedir/*/*.log {
daily
rotate 5
}
将轮换basedir /中的所有.log文件以及baseir的任何直接子级中的所有.log文件。如果您还需要更深一层,只需添加另一个
/var/log/basedir/*/*/*.log
,直到您覆盖每个级别为止。可以使用单独的logrotate配置文件进行测试,该文件包含不满足的约束(a高最小大小),然后运行日志以详细模式旋转自己
logrotate -d testconfig.conf
-d标志将列出要旋转的每个日志文件。
#2 楼
就我而言,子目录的深度可以更改而不会发出警告,因此我设置了一个bash脚本来查找所有子目录并为每个目录创建一个配置条目。旋转后保持子目录的结构对我来说也很重要,而通配符(即@DanR的答案)似乎并没有这样做。如果您每天进行日志轮换,则可以将此脚本放入日常cron作业。
basedir=/var/log/basedir/
#destdir=${basedir} # if you want rotated files in the same directories
destdir=/var/log/archivedir/ #if you want rotated files somewhere else
config_file=/wherever/you/keep/it
> ${config_file} #clear existing config_file contents
subfolders = $(find ${basedir} -type d)
for ii in ${subfolders}
do
jj=${ii:${#basedir}} #strip off basedir, jj is the relative path
#append new entry to config_file
echo "${basedir}${jj}/* {
olddir ${destdir}${jj}/
daily
rotate 5
}" >> ${config_file}
#add one line as spacing between entries
echo "\n" >> ${config_file}
#create destination folder, if it doesn't exist
[ -d ${destdir}${jj} ] || mkdir ${destdir}${jj}
done
像@DanR建议的一样,用
logrotate -d
测试#3 楼
它是旧线程,但是您可以执行以下操作:/var/log/basedir/**/*.log {
daily
rotate 5
}
这两个星号将匹配零个或多个目录。但是,您必须小心如何定义要轮换的日志文件,因为您可以轮换已经轮换的文件。我将在此处引用logrotate的手册。请谨慎使用通配符。如果指定*,logrotate将旋转所有文件,包括先前旋转的文件。一种解决方法是使用olddir指令或更精确的通配符(例如* .log)。
评论
这种通配符模式对我不起作用。 RHEL 7.3上的Logrotate 3.8.6
–northben
17年5月30日在14:40
也许您应该在运行logrotate之前启用globstar。这将使其支持bash shopt -s globstar。
–bat_ventzi
17年5月5日在9:15
我也有同样的问题。 Ubuntu 16.04.3。上的Logrotate 3.8.7 ls /var/log/basedir/**/*.log如前所述,但logrotate无效。
–frogstarr78
17年8月10日在23:12
在logrotate 3.11.0上也不适合我。我认为bash扩展与logrotate通配符无关。 (除了类似的语法)
– Thayne
19年1月23日在22:39
不工作请删除此答案或添加适用的版本。
– Quisse
20年1月8日在7:50
评论
谢谢!看起来-d实际上使logrotate处于空运行模式(即实际上并未更改任何内容)。
–ithinkihaveacat
2010-12-3 15:36
并非直接相关,但可能对某人有用。 -f选项告诉logrotate“强制运行”。命令末尾的裸字是要使用的配置文件,而不是默认文件。因此logrotate -f / some / config意味着与该配置文件一起运行,并且即使该配置文件显示尚未运行,它也始终运行。对于我未经训练的眼睛,以及对我进行此工作的前任,看来-f只是在指定配置文件。相当混乱。
–丹·普里兹(Dan Pritts)
2015年10月5日在16:39