Назад | Перейти на главную страницу

logrotate переименовать файлы с датой

Прямо сейчас logrotate переименовывает старые файлы журналов в access.log.1.gz, access.log.2.gz и т. Д. Я бы предпочел, чтобы он называл их access.log.20090714.gz, access.log.20090715.gz, и т. д. - по одному на каждый день.

Я не могу найти никакой возможности указать шаблон имени файла для старых файлов журнала. Ты знаешь как это сделать?

Кстати, это для ротации файлов журнала lighttpd, если это имеет значение.

В /etc/logrotate.conf или /etc/logrotate.d/lighttpdили нужный файл, если где-либо еще, добавьте dateext к строфе вы хотите применить суффиксы даты.

Больше информации от страница руководства logrotate:

dateext

Архивируйте старые версии файлов журнала, добавляя ежедневное расширение, например ГГГГММДД, вместо простого добавления числа.

Используйте cronolog - он будет записывать файлы журналов с правильными именами файлов в первую очередь (например, у меня обычно мои веб-серверы записывают файлы журналов как YYYY / MM / DD / access или YYYY / MM / DD / error и т. Д.). Более подробная информация о настройке cronolog с помощью lighttpd находится здесь: http://redmine.lighttpd.net/projects/1/wiki/MigratingFromApache

(хотя на этой странице упоминается, что server.errorlog не может быть запущен через cronolog, похоже, есть отчет об ошибке для этого, который был помечен как "исправленный" - к сожалению, я не могу публиковать более одного URL-адреса за раз, поскольку Я "новый" пользователь на serverfault ...)

Я не думаю, что lighttpd или logrotate могут сделать это сами по себе. Я вижу два варианта достижения этого:

Создайте свой собственный сценарий сразу после logrotate, например, в конце его cronjob. Что-то вроде:

if [ -f /var/log/lighttpd/access.log.1.gz ]; then`
    mv /var/log/lighttpd/access.log.1.gz /var/log/lighttpd/access.log.$date.gz
fi

Или syslog-ng может создавать файлы журналов по дате, а lighttpd может отправлять журналы в syslog, а не записывать их сам.

# syslog-ng.conf
destination df_lighttpd { file("/var/log/lighttpd/$YEAR$MONTH$DAY.log"); };
filter f_lighttpd { program("lighttpd"); };
log { source(s_all);  filter(f_lighttpd); destination(df_lighttpd); };

и установить accesslog.use-syslog & server.errorlog-use-syslog в lighttpd conf.


Редактировать: Cronolog проще и / или чем любое из моих предложений, я бы пошел с этим, если он работает для вас.