如何将uWSGI日志记录到文件中?

17

我刚在EC2 Ubuntu 14.04 LTS上安装了我的第一个uWSGI服务器,使用了以下配置:

[uwsgi]
http-socket    = :9001
plugin    = python
wsgi-file = foo.wsgi
chdir = /home/bar
process   = 3

uWSGI容器运行良好,但没有日志记录。按照手册,我添加了以下内容:

logger = file:/tmp/errlog

但是重新启动(使用sudo service uwsgi restart)没有起作用 - 服务器无法使用这个配置启动。

你有什么想法,我的ini配置缺少了什么吗?

2个回答

25

"常规"语法是"logto = file"。

日志选项用于高级插件,如果您想使用“file”插件,则必须加载日志文件插件(就像加载Python插件一样)。但是,如果您只想记录到文件中,logto将会足够。


1
+1 感谢。我添加了 logto = /tmp/errlog,并重新启动了服务器。服务器工作正常,但没有日志文件被创建。 - Adam Matan
1
请确保关闭并完全重启实例。重新加载不会重置日志记录子系统。 - roberto
2
当您想要进行日志路由时,需要使用logfile插件,您可以在配置文件中添加一行:plugin = logfile,所有支持的插件都可以在*/usr/lib/uwsgi/plugins*下找到。 - diabloneo
这对我来说根本行不通。在Python虚拟环境中运行nginix的uwsgi版本为2.0.17.1。我不明白的是为什么没有默认的日志文件。如果uwsgi失败,默认情况下不会在任何地方报告它...我猜Facebook崩溃也不会让任何人担心;)。Apache中的模块工作得更好。 - MagicLAMP
在最新的文档中,只有--logto作为命令,但是在ini文件中没有logto作为配置项,而是提到了“req-logger”和“logger”。这对我也没有用,但是根据@MagicLAMP的回答,通过使用“chown”给予权限后,现在它可以工作了。 - r2_d2

13

对我来说,被接受的答案没有起作用(可能是因为它已经过去4年)。 在虚拟环境中运行着uwsgi 2.0.17.1的Nginx,由circus控制工作进程。 但这个方法确实起了作用:

req-logger = file:/var/log/uwsgi/app/cart-req.log
logger = file:/var/log/uwsgi/app/cart-err.log

不确定是否必要,但我

$ chown -R www-data:www-data /var/log/uwsgi/app

参考: https://uwsgi-docs.readthedocs.io/en/latest/Logging.html

由于uwsgi作为www-data运行


1
M: logto 只记录开始的 stdout/stderr,但当使用 daemonize2 时,req-logger 和 logger 生效。 - Cheney
2
你可能是想用 chown 而不是 chmod。除此之外,我尝试了这种方法,虽然配置被接受了,但我没有看到日志被写入。我使用 sudo service uwsgi restart 重新启动了 uwsgi,但显然这还不够? - Pankrates

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接