Apache CustomLog untuk mencatat URL lengkap


16

Saya ingin menambahkan CustomLogarahan ke konfigurasi apache saya untuk mencatat URL lengkap yang diminta (atau setidaknya bagian host dari URL). Saya memiliki beberapa domain yang ditangani oleh instance apache yang sama, dan ingin dapat membedakan domain dalam log (seperti yang sekarang saya lihat adalah "GET /"). Saya melihat dalam dokumentasi di LogFormat daftar %Uuntuk mencetak bagian jalur URL, tapi saya sedang mencari host.

Jawaban:


20

Terus baca LogFormatdokumentasi dan Anda akan menemukan:

%...{Foobar}i:  The contents of Foobar: header line(s) in the request
                sent to the server.

Yang berarti Anda dapat memasukkan dalam konfigurasi Anda:

%{Host}i

The %vdan %Varahan juga bisa mendapatkan apa yang Anda inginkan.

% v akan selalu menjadi nilai ServerName("nama kanonik" dari host virtual Anda). %V mungkin nilai dari ServerName, atau mungkin nilai Hostheader HTTP , tergantung pada apakah Anda telah UseCanonicalNamemengaktifkan atau tidak dalam konfigurasi Anda (dan apakah klien memberikan Hostheader atau tidak ).


Akan %{Host}ibekerja bahkan untuk HTTP / 1.0? %Vterlihat benar pada pandangan pertama, terima kasih!
jrdioko

Saya percaya bahwa% {Host} i (atau% {...} i construct) hanya akan menghasilkan hasil jika header itu benar-benar ada dalam permintaan. Jadi untuk HTTP / 1.0, saya tidak berharap itu berguna.
larsks

Satu klarifikasi lagi: Jadi %Vapakah identik dengan %{Host}ijika UseCanonicalNamedinonaktifkan?
jrdioko

1
Menurut dokumentasi, "Dengan menonaktifkan UseCanonicalName, Apache akan membentuk URL rujukan diri menggunakan nama host dan port yang disediakan oleh klien jika ada yang disediakan (jika tidak maka akan menggunakan nama kanonik, sebagaimana didefinisikan di atas)." Jadi %Vakan digunakan ServerNamejika tidak ada Hostheader.
larsks

2

'% v' apakah ServerName itu yang Anda inginkan?


Sepertinya %vselalu mengembalikan string yang sama dalam situasi saya: nilai ServerName terlepas dari domain apa yang muncul di URL. Tapi %Vsepertinya itu melakukan hal yang benar.
jrdioko

Itu terkait dengan nama virtualhost
Robert

2

Tambahkan %vke format log Anda.

Sesuatu seperti ini:

LogFormat "%v - %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined-vhost
CustomLog /log/file/location combined-vhost

1
Sepertinya %vselalu mengembalikan string yang sama dalam situasi saya: nilai ServerName terlepas dari domain apa yang muncul di URL. Tapi %Vsepertinya itu melakukan hal yang benar.
jrdioko

2

LogFormat "% h% l% u% t \"% r \ "%> s% b \"% {Referer} i \ "\"% {Agen Pengguna} i \ "% {Host} i% U% q "Digabungkan

%{Host}i%U%qberikan url penuh

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.