Apache: czy skonfigurować „debugowanie LogLevel” tylko dla niektórych modułów?

13

Chcę debugować niektóre problemy z uwierzytelnianiem i autoryzacją na moim serwerze internetowym, szczególnie w przypadku mod_authnz_ldap i innych modułów mod_auth *.

Więc ustawiłem LogLevel debugw konfiguracji Apache, globalnie lub na pojedynczy VirtualHost. Dostarcza mi to użytecznych informacji z mod_authnz_ldap, ale także wydobywa mnóstwo hałasu z modułów SSL. Przykład poniżej.

Czy istnieje sposób na zmniejszenie LogLevel dla ssl_engine *, przy jednoczesnym utrzymaniu loglevel dla mod_authnz_ldap?

Tak, mógłbym wykluczyć linie za pomocą czegoś podobnego grep -v ssl_engine logfile, ale chcę również wykluczyć te dodatkowe dane z niektórych innych narzędzi do parsowania syslog. Wolę zmniejszyć rejestrowanie ze źródła, zamiast wykluczać je w miejscu docelowym.

[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|
Stefan Lasiewski
źródło

Odpowiedzi:

16

Odpowiadam na własne pytanie, Jeopardy Style.

Apache 2.3

Jest to możliwe w Apache 2.3.

Apache> Serwer HTTP> Dokumentacja> Wersja 2.4> Rejestrowanie poszczególnych modułów mówi:

Logowanie do modułu

Dyrektywa LogLevel pozwala określić poziom istotności dziennika dla poszczególnych modułów. W ten sposób, jeśli rozwiążesz problem z jednym konkretnym modułem, możesz zwiększyć jego objętość rejestrowania bez uzyskania szczegółów innych modułów, które Cię nie interesują. Jest to szczególnie przydatne w przypadku modułów takich jak mod_proxy lub mod_rewrite gdzie chcesz poznać szczegóły na temat tego, co próbuje zrobić.

Zrób to, określając nazwę modułu w dyrektywie LogLevel:

LogLevel info rewrite:trace5

To ustawia główny LogLevel na info, ale zmienia go na trace5 dla mod_rewrite.

Zastępuje to dyrektywy rejestrowania dla poszczególnych modułów, takie jak RewriteLog, które były obecne we wcześniejszych wersjach serwera.

Przegląd nowych funkcji w Apache HTTP Server 2.4 mówi:

Konfiguracja LogLevel dla modułu i katalogu Katalog LogLevel można teraz skonfigurować dla modułu i katalogu. Nowe poziomy śledzenia 1 do śledzenia 8 zostały dodane powyżej poziomu dziennika debugowania.

Zobacz także dyskusję na liście dyskusyjnej Apache-dev .

Apache 2.2 i wcześniejsze:

Nie, obecnie nie jest to możliwe w Apache 2.2. Podręcznik HTTP Server> Dokumentacja> Wersja 2.2> Moduły „Dyrektywa LogLevel” nie pokazuje tej opcji. Obecnie jedyną opcją jest „grep -v” naruszających linie.

Apache 2.4 (proponowany w momencie pisania):

Zostanie to dołączone do Apache 2.4. Dokumenty Apache w bagażniku (2.3) mówią obecnie:

Zgodność: Konfiguracja na moduł i na katalog jest dostępna w Apache HTTP Server 2.3.6 i nowszych

I:

Określenie poziomu bez nazwy modułu spowoduje zresetowanie poziomu dla wszystkich modułów do tego poziomu. Określenie poziomu za pomocą nazwy modułu spowoduje ustawienie poziomu tylko dla tego modułu. Możliwe jest użycie nazwy pliku źródłowego modułu, identyfikatora modułu lub identyfikatora modułu z końcowym modułem _ pominiętym jako specyfikacja modułu. Oznacza to, że następujące trzy specyfikacje są równoważne:

LogLevel info ssl:warn
LogLevel info mod_ssl.c:warn
LogLevel info ssl_module:warn
Stefan Lasiewski
źródło