Подтвердить что ты не робот

Можно ли указать формат пользовательского журнала ошибок в nginx?

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

4b9b3361

Ответ 1

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

Синтаксис: файл error_log [debug | информация | уведомление | Предупреждение | ошибка | крит]

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

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

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

  • в главном разделе - ошибка
  • в разделе HTTP - крит
  • в разделе сервера - крит

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

Ответ 2

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

Ответ 3

Для этого есть взлом.

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

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