Есть ли на платформах на базе 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.)