5

Is there any way to disable access_log for 200 HTTP response code? I tried using conditions but it seems access_log directive is not allowed in an if block. I tried this:

access_log /var/log/nginx/access_log;

if ($http_status == 200){
    access_log off;   # <---------
}

but it is not valid

# nginx -t    
nginx: [emerg] "access_log" directive is not allowed here ...

Is there any way to do this?

scetoaux
  • 1,289
mdaliyan
  • 53
  • 1
  • 5

1 Answers1

7

Please try

map $status $loggable
{ 
    ~^[2] 0; 
    default 1; 
} 

access_log /var/log/nginx/access_log combined if=$loggable;

which causes requests with response codes 2xx not to be logged.

ngx_http_log_module documentation

eMPee584
  • 125
  • 4
mightyteja
  • 441
  • 3
  • 13