1

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

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

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

4

3 回答 3

2

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

我想出的是像这样创建自己的 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-pasteor开头,而是以以下开头:--ini-paste-logged--ini

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

(uWSGI 实际上已安装到我的应用程序的虚拟环境中。)

于 2014-02-01T21:36:53.453 回答
1

这是我的做法。在 irc 日志上找到了这个

首先,确保按照此处所述正确设置它

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

from pyramid.paster import setup_logging

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

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

于 2012-07-28T11:09:18.607 回答
1

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

于 2012-07-18T15:22:22.293 回答