Alternativně můžete výstup zpracovat pomocí nástrojů navržených s primárním účelem udržovat sady souborů protokolu s omezenou velikostí, automaticky rotované, jako například:
- Dana Bernsteina
multilog
z daemontools - Bruce Guenter's
multilog
z daemontools-encore - Laurenta Bercota
s6-log
od s6 - Gerrit Pape
svlogd
z runit - Wayne Marshall
tinylog
od pachatele - Můj
cyclog
od nosh
Nástroje ke zpracování multilog
Sady souborů protokolu -format zahrnují mimo jiné:
- Russ Allberyho
multilog-watch
logrange
- Paul Kremer je
multilog-stamptail
- Mých
follow-log-directories
od nosh - Moje
export-to-rsyslog
od nosh
Další čtení
- Jonathan de Boyne Pollard (2015). "Protokolování". Rodina daemontools . Často uváděné odpovědi.
- Jonathan de Boyne Pollard (2016). Nepoužívejte
logrotate
nebonewsyslog
v tomto století. . Často uváděné odpovědi. - https://unix.stackexchange.com/a/326166/5132
rotatelogs
nástroj dodaný s Apache (v bin
dir) (viz dokumenty) přebírá vstup ze stdin a otáčí protokol po určité době
Měl jsem podobný problém a původně jsem logrotate zahodil, ale ukázalo se, že logrotate to ve skutečnosti umí dobře, klíčová směrnice je "copytruncate ". Z nějakého důvodu se tento termín neobjevil u žádného z googlování, které jsem provedl, takže přidávám tuto odpověď, abych přesně objasnil, jak jej v tomto případě použít.
Trik je v tom, že to pouze funguje pokud je přesměrování provedeno pomocí „>> “ (připojit) místo „> " (vytvořit).
Konfigurační soubor (truncate.cfg):
/tmp/temp.log {
size 10M
copytruncate
rotate 4
maxage 100
}
Testovací program (nikdy se nevzdává souboru). Můžete sledovat, jak plní disk, a přestože se zdá, že odstranění souboru protokolu funguje, ve skutečnosti neuvolní žádné místo na disku:
cat /dev/urandom >> /tmp/temp.log
Rotace běžícího protokolu:
logrotate truncate.cfg