我已经配置了我的 nginx 服务器的错误日志如下:
error_log syslog:server=unix:/dev/log,nohostname,tag= notice;
这会导致以下类型的日志行(在 systemd 日志中):
apr 11 22:54:37 hostname [616892]: 2020/04/11 22:54:37 [notice] 616892#0: using the "epoll" event method
apr 11 22:54:37 hostname [616892]: 2020/04/11 22:54:37 [notice] 616892#0: nginx/1.16.1
apr 11 22:54:37 hostname [616892]: 2020/04/11 22:54:37 [notice] 616892#0: OS: Linux 5.4.28
apr 11 22:54:37 hostname [616892]: 2020/04/11 22:54:37 [notice] 616892#0: getrlimit(RLIMIT_NOFILE): 1024:524288
apr 11 22:54:37 hostname [616893]: 2020/04/11 22:54:37 [notice] 616893#0: start worker processes
apr 11 22:54:37 hostname [616893]: 2020/04/11 22:54:37 [notice] 616893#0: start worker process 616895
第一个冒号(apr 11 22:54:37 hostname [616892]
在示例中)之前的所有内容均来自操作系统的日志系统(systemd journal),后面的内容由 nginx 提供(例如2020/04/11 22:54:37 [notice] 616892#0: nginx/1.16.1
)。如您所见,nginx 提供日期和严重性(notice
在示例中)。操作系统的日志系统已捕获这两者。因此,我想指示 nginx 不要将此信息(2020/04/11 22:54:37 [notice]
)添加到日志行中。但是,我还没有发现这是否可行以及如何实现。我知道该log_format
指令存在,但据我所知,它仅适用于访问日志。)
所以,是否可以自定义 nginx 生成的错误日志行?
答案1
不幸的是,date [level] pid#tid message
日志模式(即第一个冒号后找到的所有内容:
)被硬编码到Nginx(参见源代码)。您将无法通过配置来更改它,您需要重新编译服务器。
你可以改变的(而且你已经在做了)只有系统日志元数据:
- 您可以使用以下方式关闭发送主机名
nohostname
: SYSLOG_IDENTIFIER
你可以通过tag=identifier
选项改变
就这样。
答案2
您已经回答了自己的问题。您无法自定义错误日志格式,只能自定义访问日志格式日志模块文档
对于错误日志,您只能更改日志记录级别