- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经在 Python 3 中完成并尝试了这段代码,以便在发生异常时向我发送电子邮件,但 STMPHandler 不起作用。它与 SMTPHandler 的相同参数和值以及从此 answer 复制粘贴的相同代码完美配合。
工作代码:
import logging.handlers
smtp_handler = logging.handlers.SMTPHandler(mailhost=("smtp.gmail.com", 587),
fromaddr="somemail@gmail.com",
toaddrs="anothermail@gmail.com",
subject=u"Alfred error!",
credentials=("somemail@gmail.com", "asdasdasdasdasd"),
secure=())
logger = logging.getLogger()
logger.addHandler(smtp_handler)
try:
raise Exception()
except Exception as e:
logger.exception('Unhandled Exception')
所有处理程序都运行良好,并且答案中的代码仅适用于 exception() 调用。
我不明白为什么这不起作用。
log_config.py(无效代码):
import os
import logging
import logging.handlers
version = "2.0.0"
LOGFILE_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'log', 'my_app.log')
logging.basicConfig(format='%(levelname)s - %(message)s', level=logging.DEBUG)
logging.getLogger('telegram').setLevel(logging.WARNING)
logging.getLogger('chardet.charsetprober').setLevel(logging.WARNING)
class TimedOutFilter(logging.Filter):
def filter(self, record):
if "Error while getting Updates: Timed out" in record.getMessage():
return False
def getLogger(name):
"""
Return a logger for the file
:param name: the file name
:return: a logger
"""
global version
logger = logging.getLogger(name)
fh = logging.handlers.TimedRotatingFileHandler(LOGFILE_PATH, when='midnight')
formatter = logging.Formatter('%(asctime)s - ({0}) %(name)s - %(levelname)s - %(message)s'.format(version))
fh.setFormatter(formatter)
fh.addFilter(TimedOutFilter())
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)
if os.environ.get('SERVER', True):
mh = logging.handlers.SMTPHandler(mailhost=("smtp.gmail.com", 587),
fromaddr="somemail@gmail.com",
toaddrs="anothermail@gmail.com",
subject=u"Alfred error!",
credentials=("somemail@gmail.com", "asdasdasdasdasd"),
secure=())
mh.setFormatter(formatter)
mh.addFilter(TimedOutFilter())
mh.setLevel(logging.ERROR)
logger.addHandler(mh)
ch = logging.StreamHandler()
formatter = logging.Formatter('{0} %(levelname)s - %(message)s'.format(version))
ch.setFormatter(formatter)
ch.addFilter(TimedOutFilter())
ch.setLevel(logging.ERROR)
logger.addHandler(ch)
return logger
if __name__ == '__main__':
logger = getLogger(__name__)
try:
raise Exception()
except Exception as e:
logger.exception('Unhandled Exception')
logger.error('an error line')
logger.debug('a debug line')
最佳答案
timedOutFilter 毁了一切,因为它只返回 False,但从未返回 True。
所以只是做:
class TimedOutFilter(logging.Filter):
def filter(self, record):
if "Error while getting Updates: Timed out" in record.getMessage():
return False
return True # <==== Added this line only
解决了整个问题。
关于Python 日志记录 SMTPHandler 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49760576/
我已经在 Python 3 中完成并尝试了这段代码,以便在发生异常时向我发送电子邮件,但 STMPHandler 不起作用。它与 SMTPHandler 的相同参数和值以及从此 answer 复制粘贴
我安装了本地SMTP server并使用 logging.handlers.SMTPHandler使用此代码记录异常: import logging import logging.handlers i
我想使用Python的记录器smtphandler来发送错误和诸如此类的电子邮件。我也不希望我的收件箱因同一错误而被数千封电子邮件淹没。 有没有办法限制发送的电子邮件数量?理想情况下,如果它不断捕获相
我已经为我的新 python 脚本设置了日志记录模块。我有两个处理程序,一个将内容发送到文件,另一个用于电子邮件警报。 SMTPHandler 设置为发送 ERROR 级别或更高级别的任何内容。 一切
我正在使用标准的 SMTPHandler 记录器来捕获我的 Python 异常。 有没有办法将异常名称放入邮件主题中?这会比使用静态主题好得多,因为 Gmail(不仅是 Gmail)可以根据主题对对话
这个问题在这里已经有了答案: Collate output in Python logging MemoryHandler with SMTPHandler (6 个回答) 关闭7年前。 我正在尝试使
我在 Verizon 和 Gmail 上试过了。两台服务器均拒绝身份验证。 Gmail 给我发邮件说它拒绝登录尝试,因为连接没有使用“现代安全”。 我想知道如何通过此日志记录处理程序使用现代安全性。
我正在开发一个 flask 应用程序,我想在其中将错误级别日志记录发送到一个电子邮件地址。我尝试设置典型的错误处理程序: mail_handler = SMTPHandler(mailhost=(ap
我设置了日志记录模块 MemoryHandler 来排队 SMTPHandler 目标的调试和错误消息。我想要的是当包含所有调试语句的过程错误时发送一封电子邮件(每行一个)。相反,我得到的是每条调试消
我是一名优秀的程序员,十分优秀!