Logrotate

logrotate Compress根本不起作用redhat 7

  • June 3, 2016

我的 logrotate 壓縮根本不起作用。日誌輪換將旋轉文件,但它根本不壓縮。我正在做的任何簡單錯誤請告訴我。這是 logrotate -v /etc/logrotate.conf 的輸出

rotating pattern: /var/log/btmp  monthly (1 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/btmp
 log does not need rotating

rotating pattern: /tmp/app/stderr  419430400 bytes (1 rotations)
empty log files are not rotated, old logs are removed
considering log /tmp/app/stderr
 log needs rotating
rotating log /tmp/app/stderr, log->rotateCount is 1
dateext suffix '-20160603'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding logs to compress failed
glob finding old rotated logs failed
fscreate context set to unconfined_u:object_r:user_tmp_t:s0
renaming /tmp/app/stderr to /tmp/app/stderr-20160603
creating new /tmp/app/stderr mode = 0755 uid = 0 gid = 0
set default create context
[root@localhost app]# ls -l 
total 2103448

這是我的 conf 文件 logrotate.conf

# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
   monthly
   create 0664 root utmp
       minsize 1M
   rotate 1
}

/var/log/btmp {
   missingok
   monthly
   create 0600 root utmp
   rotate 1
}

# system-specific logs may be also be configured here.

/tmp/app/stderr {
    missingok
    rotate 1
    daily
    size 400M
    compress
    su
}

添加delaycompress到配置部分/var/log/將解決問題。

來自man logrotate

delaycompress

     Postpone  compression of the previous log file to the next rota‐
     tion cycle.  This only has effect when used in combination  with
     compress.   It  can  be used when some program cannot be told to
     close its logfile and thus might continue writing to the  previ‐
     ous log file for some time.

有趣的是,我的原始配置(沒有delaycompress指令)直接來自man logrotate(除了我改為weeklydaily

# sample logrotate configuration file
compress

/var/log/messages {
    rotate 5
    weekly
    postrotate
        /usr/bin/killall -HUP syslogd
    endscript
}

引用自:https://unix.stackexchange.com/questions/287499