2012-03-14 3 views
1

Я хочу сделать новые журналы для моего сайта каждые 00:00:01 (= каждый новый день).Apache httpd rotatelogs: возможно ли создать новый файл каждый день?

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

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

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

Ниже помощь утилиты rotatelogs:

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

Добавить это:

TransferLog "|/Opt/HTTPD/бен/rotatelogs/некоторые /, где 86400"

или

TransferLog "|/Opt/HTTPD/bin/rotatelogs/некоторые /, где 5М"

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

ответ

1

Согласно этой части manual page for rotatelogs:

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).

+0

С моей точки зрения, если вы точно определяете '3600', и вы начинаете с' 18: 30', следующий журнал должен начинаться с '19: 30'. То, чего я не понимаю, это: ** 'в начале этого интервала **. И примеры, которые они дают, не помогают: '86400' и' 3600' ... что делать, если вы точно '3660' или' 86401' ?? –

+0

Я думаю, что время запуска сервера не играет никакой роли. Если задано 3600 как время ротации, сервер разделит эпоху unix (количество секунд с 1/1/70 00:00) на 3600 и переключится на новый файл журнала, когда остаток этого деления равен нулю (что происходит в начале каждого часа). Если дано 3660, это произойдет каждые 70 млн. С 1/1/70 00:00 –

+1

Если вы говорите прав (это, вероятно, так), то документация плохая. Я посмотрю, напишу несколько тестовых примеров, а затем сделаю статью, объясняющую это в своем блоге.Большое спасибо за ваш ответ! ** '=)' ** –

Смежные вопросы