8

我正在尝试为 Python Pyramid Waitress Server 设置日志记录。我在这里关注了文档: Pyramid logging和这里:Pyramid PasteDeploy logging。我已经厌倦了这两种方法都没有产生女服务员的记录结果。我自己的日志记录工作完美。

我已将 Waitress 日志记录级别设置为 DEBUG,即使我删除了服务器文件,我也什么也得不到。女服务员默默地让服务器失败。

您如何为 Pyramid Waitress 服务器设置日志记录,以便我可以看到请求的文件、丢失的文件错误等?

方法1:从代码设置:

import logging
logging.basicConfig()
logger = logging.getLogger('waitress')
logger.setLevel(logging.DEBUG)

方法 2:使用 pserve development.ini 启动服务器,其中 development.ini 文件设置日志记录如下

[app:main]
use = egg:MyProject

pyramid.reload_templates = true
pyramid.debug_authorization = false
pyramid.debug_notfound = false
pyramid.debug_routematch = false
pyramid.default_locale_name = en
pyramid.includes =
pyramid_debugtoolbar

[server:main]
use = egg:waitress#main
host = 0.0.0.0
port = 6543



[loggers]
keys = root, myproject, waitress

[handlers]
keys = console

[formatters]
keys = generic

[logger_root]
level = INFO
handlers = console

[logger_myproject]
level = DEBUG
handlers =
qualname = myproject


[logger_waitress]
level = DEBUG
handlers =
qualname = waitress


[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
4

2 回答 2

5

日志记录配置实际上有效。在这里,我演示了一个简单的视图来为服务员记录器发出记录消息

@view_config(route_name='hello_baby', 
             request_method='GET', 
             renderer='string')
def hello_baby(request):
    import logging
    logger = logging.getLogger('waitress')
    logger.info('Hello baby!')
    return 'Hi there'

当您点击该页面时,您应该能够看到日志记录消息。您没有看到来自 waitress 的消息的原因是 -没有为 waitress 中的常见例程发出日志消息。它仅在出现问题时发出消息,您可以阅读源代码

有关 Python 日志记录的其他一些知识,您可以阅读我的文章:Python 中的良好日志记录实践

于 2013-12-29T07:34:21.470 回答
2

我使用 paste 的 translogger 显示了控制台日志记录(针对所有请求);一个很好的例子是http://flask.pocoo.org/snippets/27/

这是我的 .ini 的相关部分:

[app:main]
use = egg:${:app}
filter-with = translogger

[filter:translogger]
use = egg:Paste#translogger
# these are the option default values (see http://pythonpaste.org/modules/translogger.html)
# logger_name='wsgi'
# format=None
# logging_level=20
# setup_console_handler=True
# set_logger_level=10
于 2014-08-26T20:17:05.450 回答