如何在 nginx + uwsgi 中用 python 记录日志
我有一台服务器,运行着nginx、UWSGI和Python。UWSGI是以守护进程的方式运行的,设置了一个标志:--daemonize /var/log/uwsgi.log
,这个设置会把所有应用程序的错误记录到日志里。
我发现,当出现错误时,如果我使用Python的print语句,它会把信息写入日志,但只有在出错的时候才会这样。而标准的Python日志库似乎在任何情况下都不会影响日志。
我该如何把Python的日志库指向UWSGI的日志呢?
2 个回答
5
uWSGI 是一个 WSGI 服务器,它会把一个流传递给应用程序,这个流通过一个叫 environ
的字典传递给应用程序,里面有一个键是 wsgi.errors
。如果你在写一个简单的 WSGI 应用程序,那么直接往这个流里写就可以了。如果你使用的是一个把 WSGI 接口封装起来的框架(听起来你是这样),那么 print
通常是写入 sys.stdout
,而这个在守护进程中会被关闭,所以内容不会写入任何日志文件。你可能需要了解一下这个框架是如何处理错误日志的。
4
使用 logging.StreamHandler 作为日志处理器