如何启用 uWSGI 日志记录到文件?
Posted
技术标签:
【中文标题】如何启用 uWSGI 日志记录到文件?【英文标题】:How to enable uWSGI logging to a file? 【发布时间】:2014-07-21 20:31:44 【问题描述】:我刚刚在 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
配置中缺少什么吗?
【问题讨论】:
【参考方案1】:“通用”语法是“logto = file”。
记录器选项用于高级插件,如果你想使用“文件”插件,你必须加载日志文件插件(就像你加载 python 插件一样)。但老实说,如果你只想登录到一个文件,logto 就绰绰有余了
【讨论】:
+1 谢谢。我添加了logto = /tmp/errlog
,然后重新启动了服务器。服务器工作正常,但没有创建日志文件。
确保关闭并完全重新启动实例。重新加载不会重置日志子系统
logfile 插件是需要做日志路由的,你可以在配置文件中添加一行:plugin = logfile
,所有支持插件都可以在 /usr/lib/uwsgi/plugins .
这对我不起作用。在 python 虚拟环境中为 nginix 运行 uwsgi 版本 2.0.17.1。我不明白为什么没有默认日志文件。如果 uwsgi 失败,默认情况下不会在任何地方报告它……我猜 facebook 宕机不会让任何人担心;)。 apache 中的模块工作得更好。【参考方案2】:
接受的答案对我不起作用(可能是因为它已经 4 岁了)。 nginx 在虚拟环境中运行 uwsgi 2.0.17.1,马戏团控制工人。不过这确实有效:
req-logger = file:/var/log/uwsgi/app/cart-req.log
logger = file:/var/log/uwsgi/app/cart-err.log
不确定是否有必要,但我
$ chmod -R www-data:www-data /var/log/uwsgi/app
参考:https://uwsgi-docs.readthedocs.io/en/latest/Logging.html
uwsgi 作为 www-data 运行
【讨论】:
M:logto
只记录启动stdout/stderr,但使用daemonize2时,req-logger and logger
生效。
您可能指的是chown
,而不是chmod
。除此之外,我尝试了这种方法,虽然配置被接受,但我没有看到正在写入的日志。我用sudo service uwsgi restart
重新启动了uwsgi
,但这显然还不够?以上是关于如何启用 uWSGI 日志记录到文件?的主要内容,如果未能解决你的问题,请参考以下文章
启用 Elastic Beanstalk 的 tomcat 日志文件的日志记录到 Cloudwatch
如何为 Azure 上的 Node.js Api 应用启用 BLOB 日志记录?