Apache-2.2
在命名中使用 ip 為每個客戶端自動專用 access_log
我們有一個內部應用程序,我想讓 apache httpd 伺服器根據每個客戶端 ips 創建新的日誌文件。在我看到的文件中,您可以有多個日誌。
http://httpd.apache.org/docs/2.2/logs.html
LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog logs/access_log common CustomLog logs/referer_log "%{Referer}i -> %U" CustomLog logs/agent_log "%{User-agent}i"
但我真正想要的是這樣的。
CustomLog logs/%h-access_log common
其中 %h 被推斷為 IP 地址,即 1.1.1.1-access_log
我想有一種 mod_perl 方法可以做到這一點,但只是想知道在我編寫模組之前是否有人知道通過標準配置來做這樣的事情。
使用 Apache 日誌管道功能:日誌可以發送到外部程序。該過程將有充分的自由來根據需要過濾事物並根據需要創建文件。見http://httpd.apache.org/docs/2.2/logs.html#piped
您只需要編寫解析日誌輸入的小腳本以提取 IP 地址並將該行轉發到適當的文件。
否則,如果您可以控制客戶端的數量,您可以預先定義所有需要的文件,然後通過特定變數使用條件日誌記錄,在同一 URL 中查看此範例:
# Mark requests from the loop-back interface SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog # Mark requests for the robots.txt file SetEnvIf Request_URI "^/robots\.txt$" dontlog # Log what remains CustomLog logs/access_log common env=!dontlog
但即使有你最新的評論,我仍然認為後處理是更好的途徑。YMMV。