如果没有值,我想替换apache日志字段中的默认值。 例如如果我在apache2.conf中提到了%q的查询字符串,但在任何特定的日志行中,查询字符串都不存在。我想用'*'替换那个空格。提到apache格式时可以做到吗?
答案 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
指令将日志写入。