
Сейчас logrotate переименовывает старые файлы журналов в access.log.1.gz, access.log.2.gz и т. д. Я бы предпочел, чтобы он называл их access.log.20090714.gz, access.log.20090715.gz и т. д. — по одному на каждый день.
Я не могу найти опцию указания шаблона имени файла для старых файлов журнала. Знаете ли вы, как это сделать?
Кстати, это для ротации файлов журнала lighttpd, если это имеет значение.
решение1
В /etc/logrotate.conf
или /etc/logrotate.d/lighttpd
, или в соответствующем файле, если где-то еще, добавьте dateext
к строфе, к которой вы хотите применить суффиксы даты.
Дополнительная информация отman-страница logrotate:
дататекст
Архивируйте старые версии файлов журналов, добавляя ежедневное расширение, например ГГГГММДД, вместо простого добавления числа.
решение2
Используйте cronolog — он изначально будет записывать файлы журналов с правильными именами (например, мои веб-серверы обычно записывают файлы журналов в формате YYYY/MM/DD/access или YYYY/MM/DD/error и т. д.). Более подробную информацию о настройке cronolog с помощью lighttpd можно найти здесь:http://redmine.lighttpd.net/projects/1/wiki/Миграция из Apache
(хотя на этой странице упоминается, что server.errorlog нельзя запустить через cronolog, похоже, для этого есть отчет об ошибке, помеченный как «исправленный» — к сожалению, я не могу публиковать более одного URL-адреса за раз, так как я «новый» пользователь на serverfault...)
решение3
Я не думаю, что 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.
Редактировать:Cronolog проще и/или лучше любого из моих предложений, я бы выбрал его, если он вам подходит.