Nginx变量Nginx的log模块是很多人做日志输出的首选切入点。 Nginx默认access_log语法写入服务器本地路径或NFS,用于以后的汇总分析;在此基础上,Tengine增强了日志目标,可以通过组合管道功能或syslog接口进行远程集中日志存储。 log功能的核心是变量。灵活而全面的变量定义是Nginx日志模块的优势体现。 在2011年时曾经整理过一些核心变量的意义,主要是第一种类型的核心变量。 最近两年核心模块进行过比较大的变动,涌现出比较多的优秀第三方模块,也出现了Tengine/OpenResty这样优秀的第三方发行版,变量的定义大大丰富。 Nginx变量包括:
在这种情况下做一个变量大全需要一定的工作量,根据实际使用情况去查阅各类模块的文档是个捷径。如果有人整理过也请告诉我。 log_unescape在实际使用中会遇到一个问题关于日志中被转义的字符,比如输出一段json数据,其中的引号会被转义。这种转义规则参考了apache httpd的习惯。早在2008年就有讨论。Nginx官方社区对此问题的态度是继续保留转义。 在实际使用中,查看和处理转义过的字符串带来一些负担,在权衡中选择不做转义也经常是一种选择。Tengine在2012年将log_unescape的功能加入,可以打开/关闭转义功能,或者仅针对ASCII字符,方便大规模日志处理。 当然escape问题并不只出现在log阶段,比如这里,解决方法也不一定都是修改nginx代码或配置——在分析端做转义处理也是一种可行的思路。 (责任编辑:IT) |