24

I have the following in config file

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;

But it is still keep logging for example.com virtual host. What am I doing wrong?

  • What do you intend "main" to do here? – Evan Carroll Dec 14 '15 at 20:40
  • I've flagged this question for removal, because the most upvoted answer has to do with your syntax-error. It has nothing to do with turning off error logging. It has no searchable error messages, and I'm not sure what you're asking or why the provided answers don't solve your problem. – Evan Carroll Dec 14 '15 at 20:42
30

You are missing ; after server_name directive. access_log and off are being treated as additional server_names.

  • 11
    In addition, error_log off; doesn't turn off error logging. It just logs errors to a file named 'off'. There's no way to completely disable error logging, the closest you can get is error_log /dev/null crit; which is almost the same thing, since no error log will appear. – kolbyjack Oct 5 '11 at 12:16
  • 6
    Actually, doing access_log off; causes nginx to write the log into file called off. So this is not right answer. – user965363 Oct 17 '11 at 8:40
  • 4
    Actually, this is right answer. "Using "off" as the only parameter clears all access_log directives for the current level": wiki.nginx.org/HttpLogModule#access_log. It is not true for error_log (as added by @kolbyjack), but I believe question was about access, not error log. It is possible that some very old versions of nginx don't support this. – rvs Oct 17 '11 at 16:29
  • Is there an advantage to using off instead of /dev/null? If off causes some versions of Nginx write to a file named off, then /dev/null seems like a more universal solution. – Joe Mornin Jan 22 '16 at 23:53
17

Of course you can completely disable logging. Just point the logfiles to /dev/null and be done. ;)

access_log  /dev/null;
error_log /dev/null;
  • 3
    I use this one too; /dev/null is a real destination; while "off" is a file in some directory – edoceo Dec 13 '15 at 19:30
  • 4
    This is not the official recommend way to do it. Using 'off' is the correct way. – user1751825 Jul 30 '17 at 21:31
  • I made it /var/null and now it start saving logs in file named "null" in var directory. Should it be "/dev/null" only? – Gaurav Oct 17 '17 at 12:48
9

you can disable access_log by using

access_log off;

but if you want to disable error_log, just don't use error_log option in your conf.

  • 2
    How is this adding to the earlier answers? – Dave M Dec 13 '15 at 17:42
  • 1
    Cuz, previous answer is unuseful! Dont use that – Mustafa Özgür Apr 4 '17 at 15:51
  • 2
    If the config doesn't contain an error_log option nginx defaults to "error_log logs/error.log error": nginx.org/en/docs/ngx_core_module.html#error_log – Julian Ladisch Mar 2 '18 at 7:41
  • yeah man, that's right. so, we should /dev/null or something else? what's your suggestion? – Mustafa Özgür Mar 5 '18 at 10:33
  • This answer is wrong as this will create a log file '/usr/share/nginx/off' – DanielKhan May 11 at 7:48
1

It should be pretty simple, you could comment the log lines out

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;

and if you do get a crit errors you should do it like this : ´error_log /dev/null crit;´ so it will be :

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;
  • Don't use 'off'. As mentioned below, this will create a log file called 'off' in nginx's home dir. – DanielKhan May 11 at 7:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.