繁体   English   中英

分别记录异常的每一行

[英]Log each line of an exception separately

我正在登录syslog(正在进入papertrail),并且希望在最终日志中可见异常。

使用原始配置,异常如下所示:

Sep 02 08:35:16 web1.stage.releng.webapp.scl3.mozilla.com relengapi: Exception on /tokenauth/tokens [POST]#012Traceback (most recent call last):#012  File "/data/www/relengapi/virtualenv/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request#012    rv = self.dispatch_request()#012  File "/data/www/relengapi/virtualenv/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request#012    return self.view_functions[rule.endpoint](**req.view_args)#012

也就是说,用#012分隔的很长的线。 实际上,papertrail会在完成之前将其切断。

我想找到一种将异常拆分为多行的方法。 我愿意使用Monkeypatch或子类日志记录模块来这样做,但是我找不到合适的地方。

这里的最佳做法是什么?

以下似乎正在工作:

old_log = logging.Logger._log
def new_log(self, level, msg, args, exc_info=None, extra=None):
    old_log(self, level, msg, args, exc_info=None, extra=extra)
    if exc_info:
        if not isinstance(exc_info, tuple):
            exc_info = sys.exc_info()
        exc_text = logging._defaultFormatter.formatException(exc_info)
        for line in exc_text.split("\n"):
            old_log(self, level, line, ())
logging.Logger._log = new_log

但是我不喜欢使用logging._defaultFormatter 有没有更好的办法?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM