是否可以在nginx中指定自定义错误日志格式?

tje*_*den 26 format logging error-logging nginx

我可以在nginx中为访问日志指定自定义日志格式,但它不适用于错误日志.我希望我总能看到发生错误的时间.可能吗?

Cyb*_*m0n 19

You can't specify your own format, but in nginx build-in several level's of error_log-ing.

Syntax: error_log file [ debug | info | notice | warn | error | crit ]

Default: ${prefix}/logs/error.log

Specifies the file where server (and fastcgi) errors are logged.

Default values for the error level:

  1. in the main section - error
  2. in the HTTP section - crit
  3. in the server section - crit

In my error_log, time always presented int begin of each error string in log.

  • @FractalizeR您可以创建命名日志格式并设置是否为您的访问日志,但我认为您不能为错误日志选择日志格式.如果可以的话,请提供一个例子,因为我真的希望能够做到这一点! (16认同)
  • @Ray 是的,你是对的。看来我误读了文档。感谢您的澄清。 (3认同)
  • 现在可以了:http://nginx.org/en/docs/http/ngx_http_log_module.html#log_format (2认同)

Sat*_*tys 7

有一个黑客。

我们知道我们可以自定义访问日志格式,但不能自定义错误日志格式。所以hack是,对于自定义的错误日志,我们只在发生错误时生成访问日志。

这可以使用 error_page 指令来完成。

http {
...
  log_format custom_combined "...";
  server {
    ...
    error_page 50x @create_custom_error50x;
    ...
    location @create_custom_error50x {
      access_log path custom_combined;
      return 50x;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • @MarissaLevy with 50x,我的意思是哪个 502、503 等错误代码,无论您想自定义哪个。 (2认同)

Amn*_*non 5

当我想更改nginx错误日志的格式(在这种情况下,当使用ngx.logLua 用openresty的方法发送我自己的日志时)使用的一个肮脏技巧是在我自己的日志消息中添加足够的\b(退格)字符以删除所有信息我对运行时不感兴趣tail -f error.log

  • 燕麦,有创意,但很脏。 (3认同)