error_log_write
Директива `error_log_write` позволяет условно журналировать сообщения об ошибках на основании заданных критериев в конфигурациях NGINX.
Описание
Директива error_log_write является частью ngx_http_error_log_write_module и позволяет условно записывать пользовательские записи в журнал ошибок на основе указанных параметров. Эта директива поддерживается в разных контекстах, включая http, server и location, что даёт гибкость при настройке логирования ошибок на разных уровнях иерархии сервера.
Директива принимает до трёх параметров: level, message и необязательное условие if. Параметр level задаёт степень серьёзности записи журнала (например, info, warn), а параметр message содержит текст, который будет записан в журнал. Условие if определяет, когда запись должна быть сделана. Если условие выполняется (результат оценивается как true), NGINX записывает указанное сообщение с заданным уровнем логирования. Если условие не выполняется и установлен флаг negative, сообщение не будет записано.
Директива особенно полезна для создания детализированных стратегий логирования на основе условий выполнения, помогая разработчикам уменьшать шум в логах и сосредоточиться на важных событиях, релевантных конкретным рабочим ситуациям.
Пример конфига
server {
listen 127.0.0.1:80;
server_name localhost;
error_log_write message="server test log" if=$arg_test;
location / {
error_log_write level=warn message="auth required" if!=$http_authorization;
auth_basic "auth required";
auth_basic_user_file conf/htpasswd;
proxy_pass http://example.upstream.com;
}
}Убедитесь, что условие if правильно вычисляется, чтобы избежать непреднамеренных пропусков записей в логах.
Проверьте настройки уровня логирования NGINX, чтобы убедиться, что указанный уровень регистрирует сообщения так, как задумано.
Регулярно пересматривайте условия сопоставления, особенно если эти условия зависят от изменений в логике приложения или параметрах запроса.