如何在logrotate中从通配符中排除特定目录?

时间:2018-05-28 12:04:41

标签: regex apache logrotate

我遇到了以下问题:我有一个网站,里面有~50个网站,每个人都在/var/www/*sitename*下找到了自己的目录,例如/var/wwww/example.org/

在这些目录中有一个日志文件夹和一个htdocs文件夹,所以apache配置如下所示:

[...]
DocumentRoot /var/www/example.org/htdocs
CustomLog /var/www/example.org/logs/access.log combined
ErrorLog /var/www/example.org/logs/error.log
[...]

对于所有网站都是如此,为了确保日志轮播我将内容/etc/logrotate.d/apache2复制到同一个文件中,但调整了这样的路径:/var/www/*/logs/*.log,标准是:{ {1}}。

所以这个logrotate适用于所有网站,但现在我的问题是:一个特定的网站(可能在未来更多)不应该每天轮换,而是每周轮换。而不是14次,但是4次。

我现在已经尝试了很多来实现这一目标,但我无法让它发挥作用。 我创建了文件夹test1和test2并制作了一些access.log文件。 logrotate conf看起来像这样:

/var/log/apache2/*.log

根据我的理解,这应该在test1 /中旋转日志文件,但不在test2 /中,但是它不起作用,上面的通配符规则仍然适用。

1 个答案:

答案 0 :(得分:0)

尝试将此规则移至顶部并检查是否有帮助。

/var/log/apache2/[!t][!e][!s][!t][!2]*/*.log {}