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

Apache: Настроить «Отладку LogLevel» только для определенных модулей?

Я хочу отладить некоторые проблемы с аутентификацией и авторизацией на моем веб-сервере, особенно с mod_authnz_ldap и другими модулями mod_auth *.

Итак, я установил LogLevel debug в конфигурации Apache, глобально или для одного VirtualHost. Это дает мне полезную информацию из mod_authnz_ldap, но также извергает массу шума от модулей SSL. См. Пример ниже.

Есть ли способ уменьшить уровень журнала для ssl_engine *, сохранив при этом уровень журнала для mod_authnz_ldap?

Да, я мог исключить строки, используя что-то вроде grep -v ssl_engine logfile, но я также хочу исключить эти дополнительные данные из некоторых других инструментов синтаксического анализа системного журнала. Я бы предпочел уменьшить ведение журнала из источника, а не исключать его в месте назначения.

[Tue Jul 06 16:55:31 2010] [debug] ssl_engine_io.c(1830): | 0100: 12 23 e7 0f 45 1f 1f d3-ed 12 f8 12 1f a9 90 85  .+..(........... |
[Tue Jul 06 16:55:31 2010] [debug] mod_authnz_ldap.c(474): [client 10.10.10.123] [96991] auth_ldap authenticate: accepting joe
[Tue Jul 06 16:55:31 2010] [debug] mod_authnz_ldap.c(730): [client 10.10.10.123] [96991] auth_ldap authorise: require group: authorisation successful (attribute memberUid) [Comparison true (cached)][Compare True]
[Tue Jul 06 17:02:17 2010] [debug] ssl_engine_io.c(1830): | 0023: 23 ff 29 5a 4b bd 4c e6-bc 36 22 9c c3 22 c2 4b  ..)ZK.L..6u....K |
[Tue Jul 06 17:02:17 2010] [debug] ssl_engine_io.c(1830): | 0023: 23 ff 29 5a 4b bd 4c e6-bc 22 75 9c c3 b6 22 4b  ..)blahblah|

Я отвечаю на свой вопрос, Jeopardy Style.

Apache 2.3

Это возможно в Apache 2.3.

Apache> HTTP-сервер> Документация> Версия 2.4> Ведение журнала по модулям говорит:

Ведение журнала по модулям

Директива LogLevel позволяет указать уровень серьезности журнала для каждого модуля. Таким образом, если вы устраняете проблему только с одним конкретным модулем, вы можете увеличить его объем ведения журнала, не получая при этом сведений о других модулях, которые вам не интересны. Это особенно полезно для таких модулей, как mod_proxy или mod_rewrite где вы хотите узнать подробности о том, что он пытается сделать.

Для этого укажите имя модуля в директиве LogLevel:

LogLevel info rewrite:trace5

Это устанавливает для основного LogLevel значение info, но превращает его в trace5 для mod_rewrite.

Это заменяет директивы ведения журнала для каждого модуля, такие как RewriteLog, которые присутствовали в более ранних версиях сервера.

Обзор новых функций в Apache HTTP Server 2.4 сказать:

Конфигурация LogLevel для каждого модуля и каталога. LogLevel теперь можно настроить для каждого модуля и для каждого каталога. Новые уровни от trace1 до trace8 были добавлены выше уровня журнала отладки.

Также см. Обсуждение на Apache-dev список рассылки.

Apache 2.2 и более ранние версии:

Нет, в настоящее время это невозможно в Apache 2.2. Руководство по адресу HTTP Server> Documentation> Version 2.2> Modules "Директива LogLevel" не показывает эту опцию. Единственная опция на данный момент - "grep -v" строки, вызывающие нарушение.

Apache 2.4 (предлагается на момент написания):

Это будет включено в Apache 2.4. Документы Apache в багажник (2.3) в настоящее время говорят:

Совместимость: конфигурация для каждого модуля и каталога доступна в Apache HTTP Server 2.3.6 и более поздних версиях.

И:

Указание уровня без имени модуля сбросит уровень для всех модулей до этого уровня. Указание уровня с именем модуля установит уровень только для этого модуля. Можно использовать имя исходного файла модуля, идентификатор модуля или идентификатор модуля с опущенным в конце _module в качестве спецификации модуля. Это означает, что следующие три спецификации эквивалентны:

LogLevel info ssl:warn
LogLevel info mod_ssl.c:warn
LogLevel info ssl_module:warn