我需要在Apache的日志中对IP应用掩码。
例如,我有这个日志:192.168.234.111 - - [18/Oct/2013:16:29:40 +0200]“GET ........”
我想保存:192.168.234.xxx - - [18/Oct/2013:16:29:40 +0200]“GET ......”
为了做第一个日志,我使用这样的日志格式。
LogFormat "%h %l %u %t" combined-syslog2
CustomLog /var/log/toto combined-syslog2
Run Code Online (Sandbox Code Playgroud)
要获得第二个日志,我可以通过管道传输这样的 perl/shell post 脚本:
CustomLog |/usr/local/shl/apache_syslog2
Run Code Online (Sandbox Code Playgroud)
但我对这个解决方案并不满意。可以用 Apache 做到这一点吗?
谢谢。
埃里克
小智 5
它可以更简化:
SetEnvIffrom module mod_setenvif来创建基于Remote_Addr.最后MASKED_IP_ADDR在 LogFormat 语句中引用变量(例如),如下所示:
SetEnvIf Remote_Addr "((?:\d{1,3}\.){3})\d{1,3}" MASKED_IP_ADDR=$1XXX
LogFormat "%{MASKED_IP_ADDR}e %l %u %t" combined-syslog2
Run Code Online (Sandbox Code Playgroud)当然,您也可以选择正确的 IP 地址正则表达式:
^((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3})(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
Run Code Online (Sandbox Code Playgroud)
这个捕获前三个八位字节,以便最后一个可以被替换'XXX'。
| 归档时间: |
|
| 查看次数: |
870 次 |
| 最近记录: |