在ufsgi下使用插件pyramid_exclog的金字塔项目中的excepiton.log文件中没有异常日志输出

时间:2012-07-18 10:49:46

标签: python logging pyramid uwsgi

我使用uwsgi来部署我的金字塔项目。并使用pyramid_exclog来捕获异常日志,该异常日志应该记录到文件exception.log中。但所有日志信息(包括异常日志)都输出到文件'project.log',该文件在[uwsgi]部分中设置,文件production.ini

[uwsgi]                                                                                                                                                                                                                   
logto = /var/log/project.log

我需要你的帮助才能将异常信息输出到exception.log文件而不是project.log 我使用'pserve'命令启动我的项目,一切正常。 那么如何在uwsgi下部署pyramid_exclog。

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。我已经尝试了--ini-paste-logged选项,但这需要粘贴。我在Python 3.3下运行,并且还没有为Python 3更新Paste,所以这对我不起作用。

我想到的是创建我自己的WSGI应用程序文件(文件名为production.wsgi):

import configparser
import logging.config

from myapp import main

ini_path = 'production.ini'

# Set up logging
logging.config.fileConfig(ini_path)

# Parse config and create WSGI app
config = configparser.ConfigParser()
config.read(ini_path)

# First argument is default config values, second argument are the settings
# from the app:main section
# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/startup.html
application = main(config['DEFAULT'], **config['app:main'])

然后在我的production.ini文件中,我有以下[uwsgi]部分:

[uwsgi]
wsgi-file = %d/production.wsgi
chdir = %d
http-socket = :29999
enable-threads = true
master = true
processes = 1

我没有使用--ini-paste--ini-paste-logged启动它,而是使用--ini启动它:

/usr/bin/uwsgi --ini /usr/local/myapp/production.ini

(uWSGI实际上安装在我应用的虚拟环境中。)

答案 1 :(得分:1)

pyramid_exclog使用标准的python日志记录模块。因此,您需要确保uwsgi在运行应用程序时从您的ini解析日志记录配置。我认为这涉及使用--ini-paste-logged或uWSGI下的某些内容调用您的应用。另外,请确保按照pyramid_exclog文档中的说明实际设置日志记录。

答案 2 :(得分:1)

我是这样做的。在irc log上找到了这个

首先,请确保按照here

所述进行正确设置

然后在您的应用中手动设置日志记录

from pyramid.paster import setup_logging

# somewhere in your main app
setup_logging('your-settings.ini')

我不知道这样做是否有副作用,但到目前为止它有效