完全なURLを記録するApache CustomLog


16

CustomLog要求された完全なURL(または少なくともURLのホスト部分)をログに記録するディレクティブをApache構成に追加したいと思います。同じApacheのインスタンスで処理されている複数のドメインがあり、ログ内のドメインを区別できるようにしたいと考えています(現在、表示されているのは「GET /」のみです)。私が見るにLogFormatディレクティブのドキュメントそれが一覧表示さ%UれたURLのパス部分を印刷することが、私はホストを探しています。

回答:


20

LogFormatドキュメントを読み続けると、次のことがわかります。

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

つまり、構成に含めることができます:

%{Host}i

また%v%Vディレクティブは、あなたが望むものを得るかもしれません。

%vは常にServerName(仮想ホストの「正規名」)の値になります。 値であること、またはそれは、HTTPの値とすることができるあなたがいるかどうかに応じて、ヘッダー、お使いの設定で有効になって(そしてかどうかをクライアントが供給ヘッダ)。%V ServerNameHostUseCanonicalNameHost


ウィル%{Host}iも、HTTP / 1.0のために働きますか?%V一見正しく見える、ありがとう!
jrdioko

%{Host} i(または任意の%{...} iコンストラクト)は、そのヘッダーが実際にリクエストに存在する場合にのみ結果を生成すると考えています。したがって、HTTP / 1.0の場合、これが役立つとは思わないでしょう。
ラースク

もう1つの明確化:だから無効になっ%Vている%{Host}i場合と同じにUseCanonicalNameなりますか?
jrdioko

1
文書によると、「ApacheはUseCanonicalNameがオフの場合、クライアントが提供するホスト名とポートを使用して自己参照URLを形成します(それ以外の場合は、上記で定義した正規名を使用します)。だから、%V使用するServerName一切存在しない場合Host、ヘッダー。
ラースク

2

'%v'は、ServerNameがあなたの望むものでしょうか?


ように見え%v関わらず、URLに表示される内容のドメインのサーバー名値:常に私の状況で同じ文字列を返します。しかし%V、それは正しいことのように見えます。
-jrdioko

これは仮想ホスト名に関連しています
ロバート

2

%vログ形式に追加します。

このようなもの:

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

1
ように見え%v関わらず、URLに表示される内容のドメインのサーバー名値:常に私の状況で同じ文字列を返します。しかし%V、それは正しいことのように見えます。
jrdioko

2

LogFormat "%h%l%u%t \"%r \ "%> s%b \"%{Referer} i \ "\"%{User-Agent} i \ "%{Host} i%U%q 「結合

%{Host}i%U%q完全なURLを提供します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.