Bagaimana cara menonaktifkan logging Nginx?


27

Saya memiliki yang berikut ini dalam file konfigurasi

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;

Tetapi masih terus login untuk example.comvirtual host. Apa yang saya lakukan salah?


Apa yang ingin Anda "mainkan" di sini?
Evan Carroll

Saya telah menandai pertanyaan ini untuk dihapus, karena jawaban yang paling banyak dipilih berkaitan dengan kesalahan sintaksis Anda. Ini tidak ada hubungannya dengan mematikan logging kesalahan. Tidak ada pesan kesalahan yang bisa dicari, dan saya tidak yakin apa yang Anda tanyakan atau mengapa jawaban yang diberikan tidak menyelesaikan masalah Anda.
Evan Carroll

Jawaban:


31

Anda hilang ;setelah direktif server_name. access_logdan offsedang diperlakukan sebagai nama server tambahan.


12
Selain itu, error_log off; tidak mematikan logging kesalahan. Itu hanya mencatat kesalahan ke file bernama 'off'. Tidak ada cara untuk sepenuhnya menonaktifkan logging kesalahan, yang terdekat Anda dapatkan adalah error_log / dev / null crit; yang hampir sama, karena tidak ada log kesalahan akan muncul.
kolbyjack

6
Sebenarnya, melakukan access_log off;menyebabkan nginx menulis log ke file yang disebut off. Jadi ini bukan jawaban yang benar.
user965363

4
Sebenarnya, ini jawaban yang benar. "Menggunakan" tidak aktif "sebagai satu-satunya parameter menghapus semua arahan access_log untuk level saat ini": wiki.nginx.org/HttpLogModule#access_log . Itu tidak benar untuk error_log (seperti yang ditambahkan oleh @kolbyjack), tapi saya percaya pertanyaannya adalah tentang akses, bukan log kesalahan. Ada kemungkinan bahwa beberapa versi nginx yang sangat lama tidak mendukung ini.
rvs

Apakah ada keuntungan menggunakan offbukan /dev/null? Jika offmenyebabkan beberapa versi Nginx menulis ke file bernama off, maka /dev/nullsepertinya solusi yang lebih universal.
Joe Mornin

20

Tentu saja Anda dapat sepenuhnya menonaktifkan logging. Arahkan saja file log ke / dev / null dan selesai. ;)

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

3
Saya menggunakan ini juga; /dev/nulladalah tujuan nyata; sementara "off" adalah file di beberapa direktori
edoceo

4
Ini bukan cara rekomendasi resmi untuk melakukannya. Menggunakan 'tidak aktif' adalah cara yang benar.
user1751825

Saya membuatnya / var / null dan sekarang mulai menyimpan log dalam file bernama "null" di direktori var. Apakah hanya "/ dev / null" saja?
Gaurav

13

Anda dapat menonaktifkan access_logdengan menggunakan

access_log off;

tetapi jika Anda ingin menonaktifkan error_log, jangan gunakan opsi error_log di conf Anda.


2
Bagaimana ini menambah jawaban sebelumnya?
Dave M

1
Karena jawaban sebelumnya tidak berguna! Jangan gunakan itu
Mustafa Özgür

2
Jika konfigurasi tersebut tidak mengandung opsi error_log, nginx default menjadi "error_log log / error.log error": nginx.org/en/docs/ngx_core_module.html#error_log
Julian Ladisch

ya, benar. jadi, kita harus / dev / null atau yang lain? apa saranmu?
Mustafa Özgür

Jawaban ini salah karena ini akan membuat file log '/ usr / share / nginx / off'
DanielKhan

1

Seharusnya sangat sederhana, Anda dapat mengomentari baris log keluar

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;

dan jika Anda mendapatkan kesalahan crit Anda harus melakukannya seperti ini: ´error_log / dev / null crit; ´ jadi itu akan menjadi:

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;

Jangan gunakan 'tidak aktif'. Seperti disebutkan di bawah, ini akan membuat file log yang disebut 'off' di dir home nginx.
DanielKhan

0

Berdasarkan logging kondisional di posting Nginx tetapi bukannya menggunakan variabel untuk menentukan pada logging permintaan, hanya menggunakan nilai konstan 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;
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.