Apache httpd rotatelogs: можно ли каждый день создавать новый файл?

Я хочу создавать новые журналы для своего веб-сайта каждые 00:00:01 (= каждый новый день).

Проблема с ротацией журналов заключается в том, что вы можете либо уточнить максимальный размер журналов перед созданием нового, либо указать время ротации в секундах. Невозможно точно определить час вращения.

Они говорят о «cronjobs», но я этого не понимаю. Может ли кто-нибудь объяснить, возможно ли это, и если да, то привести пример?

Большое тебе спасибо

Ниже приведена помощь утилиты rotatelogs:

/ # /opt/httpd/bin/rotatelogs --help Неверное количество аргументов Использование: /opt/httpd/bin/rotatelogs [-l] [-f] {|} [смещение минут от UTC]

Добавь это:

TransferLog "|/opt/httpd/bin/rotatelogs/some/where 86400"

or

TransferLog "|/opt/httpd/bin/rotatelogs /some/where 5M"

в httpd.conf. Сгенерированное имя будет /some/where.nnnn, где nnnn — это системное время, в которое номинально запускается журнал (примечание: при использовании времени чередования время всегда будет кратно времени чередования, поэтому вы можете синхронизировать сценарии cron с Это). В конце каждой ротации или при достижении размера файла запускается новый журнал. / #


person Community    schedule 14.03.2012    source источник


Ответы (1)


Согласно этому разделу справочной страницы для журналов ротации:

   rotationtime
          The time between log file rotations  in  seconds.  The  rotation
          occurs  at  the  beginning of this interval. For example, if the
          rotation time is 3600, the log  file  will  be  rotated  at  the
          beginning  of every hour; if the rotation time is 86400, the log
          file will be rotated every night at midnight.

установка 86400 в качестве периода будет делать то, что вы хотите (новый файл начинается в полночь каждый день).

Также используйте опцию -l, если вы хотите, чтобы «полночь» была в вашем местном часовом поясе, а не в UTC.

Случай, когда потребуется cronjob, — это если вам нужен период в один день, но в другое время, чем в полночь. Для этого обычно используются более общие инструменты, такие как logrotate (вне apache).

person Daniel Vérité    schedule 14.03.2012
comment
С моей точки зрения, если вы укажете 3600 и начнете с 18:30, следующий журнал должен начинаться с 19:30. Чего я не понимаю, так это: at the beginning of this interval. И примеры, которые они приводят, не помогают: 86400 и 3600... а если уточнить 3660 или 86401?? - person ; 22.03.2012
comment
Я думаю, что время запуска сервера не играет никакой роли. Если в качестве времени ротации задано 3600, сервер разделит эпоху unix (количество секунд с 01.01.70 00:00) на 3600 и переключится на новый файл журнала, когда остаток от этого деления равен нулю (что происходит в начале каждого часа). Если задано 3660, это будет происходить каждые 70 минут с 01.01.70 00:00. - person Daniel Vérité; 22.03.2012
comment
Если то, что вы говорите, верно (что, вероятно, так и есть), то документация плохая. Я посмотрю, напишу несколько тестовых случаев, а затем сделаю статью с объяснением этого в своем блоге. Большое спасибо за ответ! =) - person ; 23.03.2012
comment
@ user292916 Мне было интересно то же самое. Вы когда-нибудь удосужились написать этот пост в блоге? - person Johannes Fahrenkrug; 24.04.2012