我想简化 nginx 错误日志,但没有成功。我在 index.php 中执行此操作:
error_log('abc');
我收到此错误:
2016/08/22 16:11:57 [error] 5267#0: *4 FastCGI sent in stderr: "PHP message: abc" while reading response header from upstream, client: 192.168.1.12, server: domain.com, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "domain.com", referrer: "http://domain.com/"
查看 nginx 错误文件时:
tail -f /var/log/nginx/error.log
我尝试编辑 /etc/nginx/nginx.conf + 添加
log_format vhosts 'test';
在 http{ 部分,但错误消息仍然相同。我只想在 error.log 文件中获取“abc”。
谢谢
答案1
log_format
是access_log
。例如:
tail -f /var/log/nginx/error.log | awk '{print $12}'
可能会有效果,但只有当“abc”是非空白字符串时才有效。
答案2
您不能像这样简化错误日志。
nginx通过与应用服务器软件(本例中为PHP)之间使用的FastCGI接口接收错误信息。
2016/08/22 16:11:57 [error] 5267#0: *4 FastCGI sent in stderr:
是 nginx 写入以指示时间戳的部分error.log
,并且以下错误消息来自 FastCGI 接口。
"PHP message: abc"
是PHP自己发送的消息。
while reading response header from upstream, client: 192.168.1.12, server: domain.com, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "domain.com", referrer: "http://domain.com/"
是nginx添加的,用来提示错误的其他信息。
当设置为 3 时,您可以使用 PHPerror_log()
函数的$destination
参数将错误写入日志文件。message_type
但是,除了确切的测试之外,可能还包含其他文本。在这种情况下,您可以随时打开一个新文件并通过 PHP 写入。也许您想为此实现自己的日志记录函数。