我有一个金字塔应用程序,通过pserve
或uwsgi
启动时效果很好。通过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日志中我没有看到任何有用的消息或错误。任何有关如何使用日志记录或调试问题的帮助都将非常感激。
答案 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")