apache 如何在日志中排除通配符中的特定目录?

nkhmeac6  于 2022-12-23  发布在  Apache
关注(0)|答案(2)|浏览(121)

我遇到了以下问题:我有一个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/中循环日志文件,但它不起作用,上面的通配符规则仍然适用。

zvokhttg

zvokhttg1#

不也可以这样做吗:
第一个月

7d7tgy0s

7d7tgy0s2#

试着将此规则移到顶部,看看是否有帮助。

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

相关问题