я только что настроил (r) сервер системного журнала для получения журналов различных клиентов, который хорошо работает.
только logrotate все еще не ведет себя как предположение. я хочу, чтобы logrotate создал новый файл журнала в течение каждого дня, но только сохранил и сохранил т.е. сжал непустые файлы.
моя конфигурация logrotate в настоящее время походит на это
# sample configuration for logrotate being a remote server for multiple clients
/var/log/syslog
{
rotate 3
daily
missingok
notifempty
delaycompress
compress
dateext
nomail
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
# local i.e. the system's very own logs: keep logs for a whole month
/var/log/kern.log
/var/log/kernel-info
/var/log/auth.log
/var/log/auth-info
/var/log/cron.log
/var/log/cron-info
/var/log/daemon.log
/var/log/daemon-info
/var/log/mail.log
/var/log/rsyslog
/var/log/rsyslog-info
{
rotate 31
daily
missingok
notifempty
delaycompress
compress
dateext
nomail
sharedscripts
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
# received i.e. logs from the clients
/var/log/path-to-logs/*/*
{
rotate 31
daily
missingok
notifempty
delaycompress
compress
dateext
nomail
}
то, с чем я заканчиваю, имеет, своего рода "итоговые" файлы, такие как filename-datestampDay-Day и соответствующие .gz файлы. Что я действительно имею, пустые файлы, которые в конечном счете заархивированы.
делает notifempty
директива на самом деле ответственна за эти файлы DayX-DayY, дни, в которые действительно ничего не произошло?
каков был бы эффективный способ отбросить обоих, пустые файлы журнала и их .gz файлы, так, чтобы я в конечном счете только сохранил журналы/сжатые файлы, которые действительно содержат данные?
Notifempty работает корректно, удалите delaycompress из вашего конфигурационного файла.
Я протестировал его на локальном компьютере и он должен работать так, как вы хотите.
Это также хорошая команда:
logrotate -d /etc/logrotate.d/<CONFIG_FILE>
Она покажет вам, как будут обрабатываться логи без фактической обработки.