apache中日志字段的隐藏价值

时间:2016-01-11 13:07:48

标签: apache

如果没有值,我想替换apache日志字段中的默认值。 例如如果我在apache2.conf中提到了%q的查询字符串,但在任何特定的日志行中,查询字符串都不存在。我想用'*'替换那个空格。提到apache格式时可以做到吗?

1 个答案:

答案 0 :(得分:0)

您可以创建2个不同的LogFormats。这些格式可以是相同的,除非您首先使用%q(它将在查询字符串显示时使用),然后使用* %q LogFormat "%h %l %u %t %q" first LogFormat "%h %l %u %t *" second (它将与否使用) -query-string request)。例如:

If

然后你必须告诉Apache根据请求中的查询字符串存在使用<If "-z %{QUERY_STRING}"> SetEnv noquery </If> 设置环境变量,如:

CustomLog "logs/access_log" first env=!noquery
CustomLog "logs/access_log" second env=noquery

然后你需要为每个情境定义2个不同的CustomLog指令。但是两个CustomLog都必须指向一个日志文件。像:

noquery

如果请求中有查询字符串 - 未设置CustomLog环境变量,并且Apache使用第一个noquery指令写入日志。

如果请求没有查询字符串 - 正在设置CustomLog环境变量,并且Apache使用第二个igraph指令将日志写入。