Можно ли указать собственный формат журнала ошибок в nginx? - PullRequest
25 голосов
/ 22 ноября 2010

Я могу указать собственный формат журнала для журнала доступа в nginx, но он не будет работать для журнала ошибок. Хотелось бы, чтобы я всегда видел время, когда произошла ошибка. Возможно ли это?

Ответы [ 3 ]

20 голосов
/ 26 ноября 2010

Вы не можете указать свой собственный формат, но в nginx встроено несколько уровней error_log-ing.

Синтаксис: error_log file [ debug | info | notice | warn | error | crit ]

По умолчанию: ${prefix}/logs/error.log

Указывает файл, в котором регистрируются ошибки сервера (и fastcgi).

Значения по умолчанию для уровня ошибки:

  1. в главном разделе - ошибка
  2. в разделе HTTP - крит
  3. в разделе сервера - крит

В моем error_log время всегда указывается в начале каждой строки ошибки в журнале.

5 голосов
/ 10 августа 2012

Грязная уловка, которую я использовал, когда хотел изменить формат журнала ошибок nginx (в данном случае при отправке моих собственных журналов с помощью метода openresty ngx.log из Lua), заключался в том, чтобы поставить префикс моего собственного сообщения журнала с достаточным количеством \b (backspace) символы для удаления всей информации, которую мне не было интересно просматривать при запуске tail -f error.log.

4 голосов
/ 17 ноября 2015

Для этого есть хак.

Мы знаем, что можем настроить формат журнала доступа, но не формат журнала ошибок. Таким образом, хак для настраиваемого журнала ошибок, мы создаем журнал доступа только при возникновении ошибки.

Это можно сделать с помощью директивы 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;
    }
  }
}
...