【发布时间】:2012-07-09 15:47:04
【问题描述】:
在设置 Pyramid 应用程序并向配置器添加设置时,我在理解如何从请求中访问信息时遇到问题,例如 request.session 等。我在使用 Pyramid 方面完全是新手,我到处搜索有关这方面的信息,但一无所获。
我想要做的是在生产中发送异常电子邮件时访问请求对象中的信息。我无法访问请求对象,因为在创建应用程序时它在 __init__.py 文件中不是全局的。这就是我现在得到的:
import logging
import logging.handlers
from logging import Formatter
config.include('pyramid_exclog')
logger = logging.getLogger()
gm = logging.handlers.SMTPHandler(('localhost', 25), 'email@email.com', ['email@email.com'], 'Error')
gm.setLevel(logging.ERROR)
logger.addHandler(gm)
这很好用,但我想在发送异常电子邮件时包含有关登录用户的信息,存储在 session.如何从__init__.py 访问该信息?
【问题讨论】:
-
从您的代码中,我无法理解您期望如何生成异常电子邮件。如果您计划在引发异常时发送电子邮件,您应该查看自定义异常视图。 docs.pylonsproject.org/projects/pyramid/en/latest/narr/… 这是一个视图,因此您当时将拥有当前请求,您可能希望将电子邮件发送到那里,然后生成错误响应。
-
也许你可以创建一个事件订阅者来监听
NewRequestkemeneur.com/clients/pylons/docs/pyramid/narr/…? -
@TomWillis 我正在使用 pyramid_exclog (docs.pylonsproject.org/projects/pyramid_exclog/en/latest) 来处理日志记录,因此通过将 SMTPHandler 添加到日志处理程序中,这是一种将所有日志记录代码放在一个地方的便捷方式。生成异常电子邮件,工作正常,这不是我遇到的问题:)
-
下面@Sergey 的要点是关于创建一个监听
NewRequest的事件订阅者。对于生产来说,这可能不是一个好主意。
标签: python logging request pyramid