Mám následující novou konfiguraci logrotátu:
/var/log/nexus/nexus.log {
rotate 7
missingok
compress
delaycompress
copytruncate
daily
}
Když spustím logrotate -d nexus
, Dostanu následující:
reading config file nexus
reading config info for /var/log/nexus/nexus.log
Handling 1 logs
rotating pattern: /var/log/nexus/nexus.log after 1 days (7 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/nexus/nexus.log
log does not need rotating
Moje složka/var/log/nexus/obsahuje následující:
nexus.log
oldlogs.tar.gz
Proč LogRotate neotáčí soubor nexus.log? Čekal jsem, že soubor nexus.log bude zkrácen a bude vytvořen nový soubor, například nexus.log-201106241000.
S největší pravděpodobností je soubor protokolu méně než jeden den starý nebo byl během posledního dne otočen a logrotát si pamatuje historii.
Pokud přidáte -f
bude to nutit rotaci, pokud to opravdu chcete (i když ne 100% jisti, jak to interaguje s -d
).
Můžete se podívat na historii, umístění závisí na vaší distribuci, ale může být /var/lib/logrotate/status
. Tento soubor ukazuje, kdy byly protokoly naposledy otočeny.
Při prvním spuštění logrotátu s novou konfigurací protokolu neví, kdy došlo k poslednímu otočení protokolu, takže pouze zapíše stavový řádek do /var/lib/logrotate/status
v tom smyslu, že byl spuštěn dnes.
Když následně spustí následující den, zjistí, že je den starý a otáčí jej podle očekávání. Pokud si nepřejete čekat, upravte stavový soubor logrotate a přejděte datum stavu vašeho protokolu zpět na předchozí den.
Když spustíte logrotate ručně, bude to fungovat podle očekávání
Někdy, i když spustíte logrotaci ručně, nebude to fungovat, pokud to uděláte stejný den a budete mít dateext
, kde výchozí hodnota nezahrnuje senconds (např. -%Y%m%d
). Ani když změníte stavový soubor logrotátu nebo když používáte direktivu o velikosti (např. size 200M
). Alespoň na CentOS 6 logrotate nepodaří otočit váš soubor protokolu, protože již existuje.
Chcete-li to vyřešit, musíte použít dateformat
místo dateext
, s hodnotou jako: %Y%m%d%s
.
Viz man logrotate
Pro více informací.
Dejte si pozor na to spuštěním
logrotate -vdf /etc/logrotate.conf
událost, i když pouze simulovaná, bude zaznamenána do /var/lib/logrotate.status
a následující běh logrotátu odpoví na uvedené
log does not need rotating