根据文档(http://docs.pylonsproject.org/projects/waitress/en/latest/):
Waitress发送其日志输出(包括应用程序异常 渲染)到名为waitress的Python记录器对象。您可以 使用普通的Python影响记录器级别和输出流 记录模块API。
这就是所有文件必须说的。我正在尝试将日志记录输出重定向到stdout。我将如何在pastedeploy .ini文件中执行此操作?
答案 0 :(得分:0)
您是否尝试将请求记录到女服务员?我也永远无法让它发挥作用。事实上,几年前我就问过SO的问题,有人说它无法完成。
为了解决这个问题,我添加了一个金字塔"订阅者"为每个请求执行所有日志记录。
编辑。
在检查我的代码时,我停止使用订阅者并切换到使用补间进行日志记录。两种方式都有效。
tweens.py
import logging
log = logging.getLogger(__name__)
def simple_tween_factory(handler, registry):
# one-time configuration code goes here
def simple_tween(request):
# code to be executed for each request before
# the actual application code goes herE
response = handler(request)
# code to be executed for each request after
# the actual application code goes here
path_qs = request.path_qs
status = response.status
log.debug('[{0}] {1}'.format(status, path_qs)) ##See the path and query string for every response
return response
return simple_tween
将此添加到您的金字塔配置
config.add_tween('{}.tweens.simple_tween_factory'.format(<your app name>))
答案 1 :(得分:0)
因此,问题似乎是官方的heroku迁移文档(http://docs.pylonsproject.org/projects/pyramid_cookbook/en/latest/deployment/heroku.html)未能告诉您在初始化应用程序之前需要初始化女服务员的记录器。否则,不记录任何内容。
所以,我的问题不正确。并不是说日志记录是stderr,而是日志记录无处可去。
解决方案是对runapp.py文件进行以下更改。
import os
#from paste.deploy import loadapp
import pyramid.paster
from waitress import serve
if __name__ == "__main__":
port = int(os.environ.get("PORT", 5000))
#app = loadapp('config:production.ini', relative_to='.')
pyramid.paster.setup_logging('production.ini')
app = pyramid.paster.get_app('production.ini')
serve(app, host='0.0.0.0', port=port)