我们有一个内部的应用程序,我希望有一个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
但即使你最新的评论,我仍然认为后处理是一个更好的路线。 因人而异。