我正在尝试为Python Pyramid Waitress Server设置日志记录。我跟着这里的文档: Pyramid logging和此处:Pyramid PasteDeploy logging。我已经厌倦了两种方法,这些方法没有产生服务员的记录结果。我自己的伐木工作完美。
我已将Waitress日志记录级别设置为DEBUG,即使删除服务器文件,我也什么也得不到。女服务员默默地失败服务器。
如何设置Pyramid Waitress Server的日志记录,以便查看文件请求,丢失文件错误等?
方法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
答案 0 :(得分:2)
日志记录配置确实有效。在这里,我演示了一个简单的视图,用于为waitress logger发送日志消息
@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'
当您点击页面时,您应该能够看到日志消息。您没有看到来自服务员的消息的原因是 - 没有为女服务员的常见例程发出日志消息。它只会在出现问题时发出消息,您可以阅读source code
有关Python日志记录的其他一些知识,您可以阅读我的文章:Good logging practice in Python
答案 1 :(得分: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