ServerAdmin.ru | Linux | DevOps
Сколько лет настраиваю веб сервера Nginx и только недавно случайно узнал, когда настраивал отправку логов в Loki, что веб сервер может одновременно писать логи в разных форматах. Просто в голову не приходило попробовать, что так можно.
Речь вот про что. Допустим, вы отправляете логи в какое-то хранилище. Туда удобнее отправлять формат json. Он удобен для машины, но не для восприятия человеком. Да, можно взять jq или что-то подобное для удобства, но это всё равно не то. Глазами удобнее всего смотреть на обычные текстовые логи.
Если хотите оставить себе возможность смотреть на логи глазами и грепать их, то можно сделать вот так. Показываю сразу пример конфигурации Angie/Nginx.
http {
...................
log_format main
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
log_format json escape=json
'{'
'"time_local":"$time_local",'
'"remote_addr":"$remote_addr",'
'"remote_user":"$remote_user",'
'"request":"$request",'
'"status": "$status",'
'"body_bytes_sent":"$body_bytes_sent",'
'"request_time":"$request_time",'
'"http_referrer":"$http_referer",'
'"http_user_agent":"$http_user_agent"'
'}';
...................
access_log /var/log/angie/access.log main;
access_log /var/log/angie/access.json.log json;
...................
}
Разумеется, без особого основания так делать не надо, потому что нагрузка на запись от логирования возрастёт в 2 раза. Но если очень хочется, то можно. Будут писаться одновременно оба лога в разных форматах.
У меня, к примеру, куча башевских костылей написана под обычный формат логов. Иногда бывает нужно прямо на хосте что-то быстро сделать. Если нет обычных логов, мне неудобно. Конечно, тут можно возразить, что от этого надо избавляться и использовать другие подходы. Ну уж какие есть. Я не работаю с большими нагрузками. Для меня всё это некритично. Можно ручками сходить на сервер и что-то там проверить, сделать.
#logs #angie #nginx Если у вас установлено приложение,
вы можете сразу перейти в канал