jbr*_*ahy 0 http configuration web mod-perl apache-2.2
我们有一个内部应用程序,我想让 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"
Run Code Online (Sandbox Code Playgroud)
但我真正想要的是这样的。
CustomLog logs/%h-access_log common
Run Code Online (Sandbox Code Playgroud)
其中 %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
Run Code Online (Sandbox Code Playgroud)
但即使有你的最新评论,我仍然认为后处理是一条更好的路线。天啊。
归档时间: |
|
查看次数: |
82 次 |
最近记录: |