自动专用access_log每个客户端使用ip命名

我们有一个内部的应用程序,我希望有一个Apache的httpd服务器基于每个客户端ips创build新的日志文件。 在文档中我看到你可以有多个日志。

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的方式来做到这一点,但只是想知道是否有人知道一种方式来做这样的事情,通过标准configuration之前,我写一个模块。

使用Apache日志pipe道function:可以将日志发送到外部进程。 该过程将有充分的自由度来过滤所需的东西,并根据需要创build文件。 请参阅http://httpd.apache.org/docs/2.2/logs.html#piped

您只需编写parsing日志input的小脚本来提取IP地址,然后将行转发到相应的文件。

否则,如果您控制客户端的数量,您可以事先定义所有需要的文件,然后使用条件日志logging,通过特定的variables,在相同的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 

但即使你最新的评论,我仍然认为后处理是一个更好的路线。 因人而异。