Strona man logrotate
mówi, że:
It can be used when some program cannot be told to close its logfile
and thus might continue writing to the previous log file for some
time.
Jestem tym zmieszany. Jeśli nie można nakazać programowi, aby zamknął swój plik dziennika, będzie kontynuował pisanie w nieskończoność , nie na jakiś czas . Jeśli kompresja zostanie przełożona na następny cykl rotacji, program będzie kontynuował zapisywanie do tego pliku nawet po następnym cyklu rotacji. Jak odroczenie rozwiązania problemu?
Rozumiem, że copytruncate
należy tego użyć, gdy program nie może nakazać zamknięcia pliku dziennika. Wiem, że niektóre dane zapisane w pliku dziennika gubią się podczas kopiowania.
Patrzyłem na plik logrotate dla couchdb, który zawierał obie opcje copytruncate
i delaycompress
opcje.
/usr/local/couchdb-1.0.1/var/log/couchdb/*.log {
weekly
rotate 10
copytruncate
delaycompress
compress
notifempty
missingok
}
Wygląda na to, że nie ma sensu używać, delaycompress
kiedy copytruncate
już tam jest. czego mi brakuje?
copytruncate
, nie ma potrzeby, aby program zamykał swój plik dziennika. Czy to nie ma sensu określaćdelaycompress
wraz zcopytruncate
?