使用uwsgi运行Pyramid应用程序时无法使用日志记录

时间:2014-01-31 14:46:59

标签: python logging pyramid uwsgi

我有一个金字塔应用程序,通过pserveuwsgi启动时效果很好。通过pserve启动时,我的日志记录设置正常,但不是通过uwsgi启动时。我的贴纸ini的uwsgi部分看起来像这样:

[uwsgi]
socket = 127.0.0.1:3099
master = True
processes = 1
virtualenv = /opt/data/virtualenvs/some_virtual_env
paste = config:%p
paste-logger = True
buffer-size = 65535

我当然找到了this question,并尝试像这样配置记录器:

paste-logger = %p

但是不起作用。我的日志配置使用绝对路径,日志文件的目标文件夹允许每个人读写。我想知道如何指定paste-logger,因为它根据documentation没有参数。

upstart的命令行配置定义如下:

exec uwsgi --master --die-on-term --emperor /etc/uwsgi/apps-enabled

没有创建自定义日志文件,在uwsgi日志中我没有看到任何有用的消息或错误。任何有关如何使用日志记录或调试问题的帮助都将非常感激。

1 个答案:

答案 0 :(得分:2)

这不完全是您所询问的内容,但以下内容适用于Ubuntu。

我使用Pyramid模板提供的默认日志记录配置,它将日志流式传输到stderr:

# Begin logging configuration

[loggers]
keys = root, myapp

[handlers]
keys = console

[formatters]
keys = generic

[logger_root]
level = INFO
handlers = console

[logger_myapp]
level = DEBUG
handlers =
qualname = myapp

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s

# End logging configuration

Ubuntu中的每个uWSGI应用程序都有自己的配置文件,应放在该文件中 / etc / uwsgi / apps-enabled /目录。这里以myapp.ini为例:

[uwsgi]
plugin = python
virtualenv = /path/to/myapp/virutalenv
paste = config:/path/to/myapp/config.ini

因此,当我使用pserve命令运行应用程序时,我将在控制台中获取日志。当我使用uWSGI运行它时,uWSGI会将输出日志创建到/var/log/uwsgi/app/myapp.log

<强>更新

我只是在uWSGI配置周围挖了一个地方,在那里设置了日志文件位置。 uWSGI init.d脚本使用daemonize参数:

--daemonize "/var/log/uwsgi/${CONFNAMESPACE}/${CONFNAME}.log"

更新2

在您的情况下,明确设置应用程序中的日志记录可能会有所帮助:

from pyramid.paster import setup_logging

setup_logging("/path/to/config.ini")