【问题标题】:Why is my log level not being used when using loadapp from paste.deploy?为什么在使用 paste.deploy 中的 loadapp 时没有使用我的日志级别?
【发布时间】:2013-10-04 04:35:04
【问题描述】:

我想在生产pyramid web 项目中临时打开调试消息,所以我调整了production.ini 文件,将其推送到Heroku,只看到错误和警告级别的消息。

所以我想,这似乎很奇怪,因为如果我在本地 PC 上启动如下所示的金字塔应用程序,我会收到所有日志级别的消息。

env/bin/pserve production.ini

好的,这并不是它在 Heroku 上的运行方式,它实际上是从一个看起来像这样的 little bit of python 运行的(在一个名为 runapp.py 的文件中):

import os

from paste.deploy import loadapp
from waitress import serve

if __name__ == "__main__":
    port = int(os.environ.get("PORT", 5000))
    app = loadapp('config:production.ini', relative_to='.')

    serve(app, host='0.0.0.0', port=port)

现在,如果我在本地 PC 上执行此操作,我肯定会得到与部署到 Heroku 时相同的行为(不足为奇)。

 python runapp.py

我的问题是,我在这里缺少什么?为什么以第二种方式运行它会导致除 ERROR 和 WARN 以外的其他日志消息被输出到标准输出?当然,既然它使用的是相同的production.ini 文件,它的工作方式应该与我使用pserve 进程一样吗?

这是我来自 production.ini 的日志记录部分:

###
# logging configuration
# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html
###

[loggers]
keys = root, test

[handlers]
keys = console

[formatters]
keys = generic

[logger_root]
level = DEBUG
handlers = console

[logger_test]
level = DEBUG
handlers = console
qualname = test

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

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

【问题讨论】:

    标签: python pyramid paster


    【解决方案1】:

    PasteDeploy 实际上并不承担配置日志记录的责任。这是 INI 文件具有双重用途的一个小怪癖。 PasteDeploy 关心某些部分,logging.config.fileConfig 关心某些部分,两者都必须运行才能完全加载 INI 文件。

    如果您遵循金字塔包装器来执行此操作,您会这样做:

    pyramid.paster.setup_logging(inipath)
    pyramid.paster.get_app(inipath)
    

    您使用这些而不是自己做的主要原因是当inipath 包含像development.ini#myapp 这样的部分说明符时,它们支持做“正确的事情”,fileConfig 会崩溃。

    【讨论】:

    • 太好了,谢谢 - 这就是工作。我用 'import pyramid.paster' 和 'app = loadapp('config:production.ini', relative_to='.')' 行替换了行:'from paste.deploy import loadapp' 和你给我的两个(只是为他们传递“production.ini”),它运行良好并应用了我的日志记录,所以我是一个快乐的兔子:-)。
    猜你喜欢
    • 2014-10-05
    • 2021-11-10
    • 2011-06-02
    • 2017-12-02
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    相关资源
    最近更新 更多