如何启用 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

Ubuntu中怎么启用Crontab日志记录

如何启用程序集绑定日志记录?

如何为 Azure 上的 Node.js Api 应用启用 BLOB 日志记录?

如何使用 Apache HttpClient 5 启用线路日志记录

Ubuntu中怎么启用Crontab日志记录