error logging with nginx and uWSGI

Maxim Dounin mdounin at
Tue May 5 14:02:03 UTC 2015


On Tue, May 05, 2015 at 08:08:42AM -0400, Larry Martell wrote:

> On Sun, May 3, 2015 at 8:18 AM, Maxim Dounin <mdounin at> wrote:
> > Hello!
> >
> > On Fri, May 01, 2015 at 12:04:51PM -0400, Larry Martell wrote:
> >
> >> Prior to now, all the django projects I've worked on have used apache
> >> and WSGI. With those, when an error occurred I went to
> >> /var/log/httpd/error_log and details of the error were clearly there.
> >>
> >> Now for the first time I am working on a project using nginx and
> >> uWSGI. Here, the /var/log/nginx/error_log is always empty. And the
> >> uWSGI logs have some messages, but nothing about any errors. In this
> >> setup where would I go to find the errors that
> >> /var/log/httpd/error_log logs? Is there some config setting that is
> >> suppressing the nginx errors?
> >
> > The uwsgi protocol doesn't include an error stream from an
> > application to nginx.  That is, if you are looking for errors
> > generated by your application, you should look into uWSGI logs.
> >
> > Own nginx logs can be controlled using the error_log directive,
> > see  But I suspect it's not what are
> > you looking for, see above.
> When my app has, for example, a syntax error, then yes, that appears
> in the uWSGI log. But what I was talking about are the HTTP errors
> like a 500 or a 400. When I get those there's nothing in the logs.

If an error is returned by your application and/or uWSGI, then its 
reasons are expected to be in your application logs (or the uWSGI 

If an error is returned by nginx (e.g., because a client sent an 
invalid request and nginx returned 400), then reasons should be in 
nginx error log.  Client-related errors, though, are usually 
logged at the "info" level, and won't be visible in error log by 
default, see

Note well that nginx error logs are highly customizeable, and it 
is possible that you are looking into a wrong file.  In 
particular, please note that default error log can be redefined 
during compilation (see "nginx -V" output to find out which one is 
used by default), and can also be redefined on a per-server or a 
per-location basis (check your configs to find out if it's the 

Maxim Dounin

More information about the nginx mailing list