我遇到了以下问题:我有一个Web服务器,上面有大约50个网站,每个人都在/var/www/*sitename*
下有自己的目录,例如/var/wwww/example.org/
。
在这些目录中有一个log文件夹和一个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
,标准是:/var/log/apache2/*.log
.
所以这个logrotate适用于所有网站,但现在我的问题是:一个特定的网站(也许将来会更多)不应该每天轮换,而是每周轮换。2也不是14次,而是4次。
现在我已经尝试了很多方法来实现这个目标,但是我无法让它工作。我创建了文件夹test1和test2,并创建了一些access.log文件。logrotate conf看起来像这样:
/var/log/apache2/test*/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
if /etc/init.d/apache2 status > /dev/null ; then \
/etc/init.d/apache2 reload > /dev/null; \
fi;
endscript
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi; \
endscript
}
/var/log/apache2/[!t][!e][!s][!t][!2]*/*.log {}
在我的理解中,这应该会在test1/中循环日志文件,而不是在test2/中循环日志文件,但它不起作用,上面的通配符规则仍然适用。
2条答案
按热度按时间zvokhttg1#
不也可以这样做吗:
第一个月
7d7tgy0s2#
试着将此规则移到顶部,看看是否有帮助。