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

Каковы недостатки совместного использования mod_log_rotate и rotatelogs.exe?

Есть ли на платформах на базе Microsoft какие-либо недостатки или скрытые подводные камни в использовании rotatelogs.exe для директивы ErrorLog и разрешении mod_log_rotate обрабатывать директивы CustomLog для вращения? Насколько я понимаю, mod_log_rotate берет на себя обязанности по ведению журнала на сервере, так как же взаимодействуют mod_log_rotate и rotatelogs.exe? Передаются ли данные rotatelogs.exe из mod_log_rotate?

Ниже приведена конфигурация, которая у меня есть в httpd.conf:

# Rotate our ErrorLogs, since mod_log_rotate doesn't seem to handle this.
ErrorLog "|bin/rotatelogs.exe -l logs/error/error.%Y-%m-%d-%H_%M_%S.log 86400"
[...]
<IfModule log_rotate_module>
#
# Produce a log file with at human readable extension in a directory called 'access'.
#
CustomLog logs/access/access_log.%Y-%m-%d-%H%M%S combined
[...]

Я не прошу мнений, особенно если они не по теме. Я хотел бы знать, приведет ли это к каким-либо реальным проблемам с технической точки зрения или с точки зрения безопасности.

rotatelogs и mod_log_rotate - это два разных решения одной и той же проблемы (ротация журналов без необходимости сигнализировать или перезапускать Apache).

rotatelogs (или другие программы, например cronolog) решает проблему, передавая журнал Apache по конвейеру программе, которая обрабатывает ротацию. Это прекрасное решение, хотя оно означает запуск другого процесса и открытие каналов.

mod_log_rotate решает проблему, обрабатывая ротацию в серверном процессе. Опять же, тоже прекрасное решение, но оно только меняет журналы доступа (что оставляет вам необходимость делать что-то еще для журнала ошибок).

Нет ничего «неправильного» в использовании обоих решений (одно для обработки журнала доступа, другое для обработки журнала ошибок), но ради здравого смысла и согласованности я бы придерживался одного решения - либо сигнализировать Apache при ротации журналов, либо конвейер все, чтобы rotatelogs.


В частности, в Windows я бы предложил ротацию ваших журналов извне и сигнализацию Apache, потому что конвейеры в Windows могут содержать ошибки (и насколько мне известно, с 2006 года ситуация не сильно улучшилась).

(На самом деле, если бы я рекомендовал, я бы рекомендовал не работает Apache в Windows - Apache разработан для работы на серверах Unix, IIS разработан для работы на серверах Windows, и они никогда не должны пересекаться, несмотря на то, что люди Apache могут утверждать о «поддержке» Windows.)