Apache: Mengkonfigurasi "LogLevel debug" hanya untuk modul tertentu?

13

Saya ingin men-debug beberapa masalah otentikasi & otorisasi di server web saya, terutama dengan mod_authnz_ldap dan modul mod_auth * lainnya.

Jadi saya atur LogLevel debugdi konfigurasi Apache, baik secara global atau untuk satu VirtualHost. Ini memberi saya informasi yang berguna dari mod_authnz_ldap, tetapi juga mengeluarkan banyak kebisingan dari modul SSL. Lihat di bawah untuk contoh.

Apakah ada cara untuk mengurangi LogLevel untuk ssl_engine *, sambil tetap mempertahankan loglevel untuk mod_authnz_ldap?

Ya, saya bisa mengecualikan garis menggunakan sesuatu seperti grep -v ssl_engine logfile, tetapi saya juga ingin mengecualikan data tambahan ini dari beberapa alat parsing syslog lainnya. Saya lebih suka mengurangi logging dari sumber, daripada mengecualikannya di tujuan.

[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
sumber

Jawaban:

16

Saya menjawab pertanyaan saya sendiri, Jeopardy Style.

Apache 2.3

Ini dimungkinkan di Apache 2.3.

Apache> Server HTTP> Dokumentasi> Versi 2.4> Log per modul mengatakan:

Logging per modul

Arahan LogLevel memungkinkan Anda menentukan tingkat keparahan log berdasarkan per-modul. Dengan cara ini, jika Anda memecahkan masalah hanya dengan satu modul tertentu, Anda dapat meningkatkan volume loggingnya tanpa juga mendapatkan rincian modul lain yang tidak Anda minati. Ini sangat berguna untuk modul seperti mod_proxy atau mod_rewrite di mana Anda ingin mengetahui detail tentang apa yang ingin dilakukan.

Lakukan ini dengan menentukan nama modul di arahan LogLevel Anda:

LogLevel info rewrite:trace5

Ini mengatur LogLevel utama ke info, tetapi mengubahnya menjadi trace5 untuk mod_rewrite.

Ini menggantikan arahan logging per-modul, seperti RewriteLog, yang hadir di versi server yang lebih lama.

Gambaran umum fitur baru di Apache HTTP Server 2.4 mengatakan:

Konfigurasi LogLevel per-modul dan per-direktori LogLevel sekarang dapat dikonfigurasi per modul dan per direktori. Level baru trace1 hingga trace8 telah ditambahkan di atas level log debug.

Juga lihat diskusi di milis Apache-dev .

Apache 2.2 & Sebelumnya:

Tidak, saat ini tidak memungkinkan di Apache 2.2. Manual di Server HTTP> Dokumentasi> Versi 2.2> Modul "Petunjuk LogLevel" tidak menampilkan opsi ini. Satu-satunya pilihan saat ini adalah "grep -v" baris yang menyinggung.

Apache 2.4 (diusulkan pada saat penulisan):

Ini akan disertakan dengan Apache 2.4. Dokumen Apache di bagasi (2.3) saat ini mengatakan:

Kompatibilitas: Konfigurasi per-modul dan per-direktori tersedia di Apache HTTP Server 2.3.6 dan yang lebih baru

Dan:

Menentukan level tanpa nama modul akan mengatur ulang level untuk semua modul ke level itu. Menentukan level dengan nama modul akan menetapkan level hanya untuk modul itu. Dimungkinkan untuk menggunakan nama file sumber modul, pengidentifikasi modul, atau pengidentifikasi modul dengan _module trailing dihilangkan sebagai spesifikasi modul. Ini berarti tiga spesifikasi berikut ini setara:

LogLevel info ssl:warn
LogLevel info mod_ssl.c:warn
LogLevel info ssl_module:warn
Stefan Lasiewski
sumber