logrotate配置文件语法-可能有多个通配符条目?


83

由于手册页没有回答我的问题,并且我不想强制轮换,因此我决定在此处提出问题。

logrotate的手册页给出了以下示例:

   "/var/log/httpd/access.log" /var/log/httpd/error.log {
       rotate 5
       mail www@my.org
       size 100k
       sharedscripts
       postrotate
           /usr/bin/killall -HUP httpd
       endscript
   }

所有带有通配符的示例仅包含一个条目。现在,我感兴趣的是是否也允许这样做:

   /var/log/httpd/*.log /var/log/httpd/*/*.log {
       # ... same as above
   }

原因是:我有多个虚拟主机,并由“拥有”这些虚拟主机的用户将其拆分。由于日志文件是世界可读的,因此我想将文件夹绑定安装到用户主目录中,但将其限制为用户“拥有”的日志文件,这是通过将日志分为文件夹(并绑定)来最简单地实现的。 -mount仍然需要该方案)。因此,我正在寻找一种解决方案,以旋转/var/log/httpd该目录的子目录下的所有日志文件以及该目录下的所有日志文件,不必按名称列出每个子目录。

通常,手册页不提供通配符规则或完全路径是否可能有多个条目的线索。我正在使用Debian“ Squeeze”随附的logrotate版本3.7.8-6,但我认为这不一定特定于发行版或程序版本。

Answers:


119

是的,您可以使用多个通配符。您可以执行以下操作来测试文件,而无需执行实际的轮换:

logrotate -d -f /etc/logrotate.conf
  • -d =打开调试模式。在调试模式下,将不会对日志或logrotate状态文件进行任何更改。

  • -f =告诉logrotate强制旋转,即使它认为没有必要也是如此。有时,在将新条目添加到logrotate之后,或者如果手动删除了旧日志文件,这将很有用,因为将创建新文件,并且日志记录将继续正确进行。


3
非常感谢!刚刚尝试,它的工作原理。从输出中可以看出,通配符可以像在shell中一样工作。
0xC0000022L

24

我只是想澄清一下,因为这就是我在这里寻找如何做的事情,

允许为单个配置指定多个日志文件,例如

/var/log/httpd/access.log
/var/log/httpd/error.log
/var/log/httpd/mysite/*.log
{
    rotate 5
    mail nobody@example.org
    size 100k
    sharedscripts
    postrotate
        /usr/bin/killall -HUP httpd
    endscript
}

//,多行中出现的不同路径是否存在问题?
内森·巴桑内斯

@NathanBasanese我不完全理解您的问题,我认为您可以将路径行指向您喜欢的磁盘上任何位置的文件,它们不必都位于同一目录前缀中。
ThorSummoner

@NathanBasanese哦,我想我明白,在不同线路上有多个日志滚动目标似乎是一种正常使用,我复制从其他logrotate.d脚本的形式,例如/etc/logrotate.d/rsyslog
ThorSummoner

4

从手册页进行logrotate

请注意,日志文件名可以用引号引起来(如果名称包含空格,则必须使用引号)。普通的shell引用规则适用,并支持','和\字符。

从单一模式到多个模式时,请记住修改或删除引号:

这有效:

/var/log/*.log /var/log/*.blog {

这也可以:

/var/log/*.log
/var/log/*.blog {

这不起作用:

'/var/log/*.log /var/log/*.blog' {

而且这都不是:

"/var/log/*.log /var/log/*.blog" {

与单模式情况进行比较。

这有效:

'/var/log/*.log' {

这也有效:

"/var/log/*.log" {

经过logrotate 3.10.0测试


2
知道这样做是否会很有趣:"/var/space /log/*.log" "/var/log/*.blog"
KajMagnus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.