我们有一个内部应用程序,我想让 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 中查看此示例:
但即使有你最新的评论,我仍然认为后处理是更好的途径。YMMV。