如果 Nginxlog_format
配置指令包含该$http_user_agent
变量,则记录的值将包含空格。例如,
log_format myformat '$http_referer';
记录如下行:
Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
我不想要空格,并且更喜欢:
Mozilla/5.0%20(compatible;%20bingbot/2.0;%20+http://www.bing.com/bingbot.htm)
这样做的原因是为了使以后解析日志文件变得更加容易,因为它们将具有空格分隔的字段(但字段内没有空格),可以使用.split_whitespace()
Rust 中的方法或Fields
Go 中的函数等轻松地将其分开。
有谁知道如何让 Nginx 转义 log_format 配置指令中使用的变量中的空格?
答案1
据我所知,这样的功能并不存在。
还有其他包含空格的条目,例如"GET / HTTP 1.1"
中的access.log
。
正确的解析方法access.log
是首先将嵌入在引号中的每个字符串作为单个项目,然后用空格拆分行中的所有项目。
有很多可用的开源日志分析器,您可以研究它们如何实现access.log
文件的读取。