Is it possible to specify custom error log format in nginx?

好久不见. 提交于 2019-11-27 17:27:13

问题


I can specify custom log format for access log in nginx, but it won't work for error log. I wish I always saw time when error occur. Is it possible?


回答1:


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.




回答2:


A dirty trick I used when I wanted to change the format of the nginx error log (in this case when sending my own logs with openresty's ngx.log method from Lua) was to prefix my own log message with enough \b (backspace) characters to delete all the information I wasn't interested in viewing when running a tail -f error.log.




回答3:


There is a hack for that.

We know that we can customize the access log format but not error log format. So the hack is, for customized error log, we generate access log only when error occurs.

This can be done using error_page directive.

http {
...
  log_format custom_combined "...";
  server {
    ...
    error_page 50x @create_custom_error50x;
    ...
    location @create_custom_error50x {
      access_log path custom_combined;
      return 50x;
    }
  }
}


来源:https://stackoverflow.com/questions/4246756/is-it-possible-to-specify-custom-error-log-format-in-nginx

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!