Як відключити журнал 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.