我使用uwsgi来部署我的金字塔项目。并使用pyramid_exclog来捕获异常日志,该异常日志应该记录到文件exception.log中。但所有日志信息(包括异常日志)都输出到文件'project.log',该文件在[uwsgi]部分中设置,文件production.ini
[uwsgi]
logto = /var/log/project.log
我需要你的帮助才能将异常信息输出到exception.log文件而不是project.log 我使用'pserve'命令启动我的项目,一切正常。 那么如何在uwsgi下部署pyramid_exclog。
答案 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')
我不知道这样做是否有副作用,但到目前为止它有效