2013-03-17 152 views
1

是否可以在apache的日誌條目的實際格式中調用條件格式?apache日誌文件的條件格式

例如,我現在的格式看起來像這樣的訪問日誌:

0.0.0.0 - - %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %V %A 

我之所以有「%A」那裏到底是看他們是否通過IPv6或IPv4訪問的網站地址(不記錄用戶的IP)。我的問題是,是否可以這樣做,而不是寫入所用接口的實際ip,它只會寫入「v4」或「v6」?

我知道這可以做後處理,但我想知道是否有可能「即時」這麼說。

Currrently使用Apache/2.2.16

回答

2

我的問題是,是否有可能使它所以不是寫使用的接口的實際IP,它只會寫「V4」或「V6」 ?

那麼,那裏沒有複雜的「if-else」構造。

但是,您可以嘗試事先設置一個環境變量 - 然後通過%{VARNAME}e記錄日誌的內容。

SetEnvIf Server_Addr 127\.0\.0\.1 IP_VERSION=v4 
SetEnvIf Server_Addr /*whatevertheipv6addresslookslikeasregexp*/ IP_VERSION=v6 

而在你的日誌格式規範%{IP_VERSION}e有記錄該變量的內容。

(未經測試,只是從文檔推斷。不能保證。)

+0

這就像一個魅力。謝謝! – Felthragar 2013-03-17 17:57:52