Як відключити журнал Nginx?


27

У конфігураційному файлі у мене є наступне

server {
    listen       80;
    server_name  _;
    access_log  /var/log/nginx/access.log  main;
  ...

server {
    listen       80;
    server_name  example.com
    access_log  off;
    error_log off;

Але це все ще веде журнал для example.comвіртуального хоста. Що я роблю неправильно?


Що ти маєш на увазі "головне" зробити тут?
— Еван Керролл

Я позначив це питання для видалення, тому що найбільш відповідна відповідь стосується вашої синтаксичної помилки. Це не має нічого спільного з вимкненням журналу помилок. У ньому немає повідомлень про помилки, які можна шукати, і я не впевнений, що ви запитуєте або чому надані відповіді не вирішують вашу проблему.
— Еван Керролл

Відповіді:


31

Вам не вистачає ;директиви імені сервера. access_logі offрозглядаються як додаткові імена сервера.


12
Крім того, помилка_log вимкнена; не вимикає реєстрацію помилок. Він просто реєструє помилки у файлі з назвою "вимкнено". Немає можливості повністю відключити реєстрацію помилок, найближчим до вас може стати - error_log / dev / null krit; що майже те саме, оскільки журнал помилок не з’явиться.
— колб'як

6
Власне, це access_log off;призводить до того, що nginx записує журнал у файл, який називається off. Тож це неправильна відповідь.
— user965363

4
Власне, це правильна відповідь. "Використання" off "як єдиного параметра очищає всі директиви access_log для поточного рівня": wiki.nginx.org/HttpLogModule#access_log . Це неправда для error_log (як додав @kolbyjack), але я вважаю, що питання стосувалося доступу, а не журналу помилок. Можливо, деякі дуже старі версії nginx не підтримують це.
— rvs

Чи є перевага використовувати offзамість /dev/null? Якщо offдеякі версії Nginx записують у файл з назвою off, то це /dev/nullздається більш універсальним рішенням.
— Джо Морнін

20

Звичайно, ви можете повністю відключити ведення журналу. Просто наведіть журнали на / dev / null, і це буде зроблено. ;)

access_log  /dev/null;
error_log /dev/null;

3
Я також користуюся цим; /dev/null- справжнє місце призначення; а "вимкнено" - файл у деякому каталозі
— edoceo

4
Це не офіційний рекомендований спосіб зробити це. Використання "вимкнено" - це правильний спосіб.
— користувач1751825

Я зробив це / var / null, і тепер він починає зберігати журнали у файлі під назвою "null" у каталозі var. Чи має бути лише "/ dev / null"?
— Гаурав

13

ви можете відключити його access_logза допомогою

access_log off;

але якщо ви хочете вимкнути error_log, просто не використовуйте параметр error_log у своїй конф.


2
Як це додавання до попередніх відповідей?
— Дейв М

1
Тому що попередня відповідь є невикористаним! Не використовуйте цього
— Мустафа Озгюр

2
Якщо конфігурація не містить параметр error_log параметр nginx за замовчуванням "error_log logs / error.log error": nginx.org/en/docs/ngx_core_module.html#error_log
— Julian Ladisch

так, людина, це правильно. значить, ми повинні / dev / null чи щось інше? яка ваша пропозиція?
— Мустафа Озгюр

Ця відповідь неправильна, оскільки це створить файл журналу '/ usr / share / nginx / off'
— DanielKhan

1

Це має бути досить просто, ви можете прокоментувати рядки журналу

server {
    listen       80;
    server_name  _;
    #access_log  /var/log/nginx/access.log  main;
  ...

server {
    listen       80;
    server_name  example.com
    #access_log  off;
    #error_log off;

і якщо ви отримаєте критичні помилки, ви повинні зробити це так: 'error_log / dev / null krit;' так буде:

server {
    listen       80;
    server_name  _;
    access_log  /dev/null crit;
  ...

server {
    listen       80;
    server_name  example.com
    access_log  /dev/null crit;
    error_log /dev/null crit;

Не використовуйте "вимкнено". Як було сказано нижче, це створить файл журналу під назвою "вимкнено" у домашньому режимі nginx.
— DanielKhan

0

На основі умовного журналу в публікації Nginx, але замість використання змінної для визначення реєстрації запиту, просто використовуючи постійне значення 0.

server {
listen       80;
server_name  _;
access_log  /var/log/nginx/access.log  main;
}

server {
listen       80;
server_name  example.com
access_log  /var/log/nginx/access.log if=0;
error_log /var/log/nginx/error.log if=0;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.