如何配置Apache 2.4的httpd.conf记录超过1MB的响应请求日志?
配置Apache 2.4仅记录响应大小超1MB的请求日志
问题原因
你当前的SetEnvIfExpr语句无效,是因为不能直接引用日志格式中的%O占位符——%O是日志输出阶段才会解析的变量,而SetEnvIfExpr需要使用Apache表达式的内置变量来获取请求/响应的实时数据。
修正后的配置
情况1:按总发送字节(含响应头,对应日志里的%O)过滤
如果要统计包含响应头在内的总发送字节超过1MB(1024×1024=1048576字节),使用bytes_sent内置变量:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" %I %O" combinedio # 匹配总发送字节超过1MB的请求,设置环境变量logio-traffic SetEnvIfExpr "bytes_sent > 1048576" logio-traffic CustomLog "|C:/wamp64/bin/apache/apache2.4.51/bin/rotatelogs.exe ${INSTALL_DIR}/logs/access.%Y-%m-%d-%H_%M_%S 5M" combinedio env=logio-traffic
情况2:按响应体大小(对应日志里的%b)过滤
如果只统计响应体内容超过1MB,使用resp_content_length内置变量:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" %I %O" combinedio # 匹配响应体大小超过1MB的请求,设置环境变量logio-traffic SetEnvIfExpr "resp_content_length > 1048576" logio-traffic CustomLog "|C:/wamp64/bin/apache/apache2.4.51/bin/rotatelogs.exe ${INSTALL_DIR}/logs/access.%Y-%m-%d-%H_%M_%S 5M" combinedio env=logio-traffic
注意事项
- 1MB的严格字节数是
1048576(1024×1024),你之前写的1000000是1000KB,可根据需求调整数值。 - 修改配置后需要重启Apache服务才能生效。
内容的提问来源于stack exchange,提问作者akicsike
相关产品推荐
相关产品推荐

