![](/img/trans.png)
[英]How to get the level of the logging record in a custom logging.Handler in Python?
[英]How to get the actual object passed to a logging call from a logging.Handler
假设我执行以下操作:
import logging
some_obj = MyObject()
logging.info(some_obj)
我有一个logging.Handler
来处理这个消息:
class MyHandler(logging.Handler):
def emit(self, record):
# ...
有没有办法从我的处理程序中获取对some_obj
的引用? 从logging.LogRecord
的文档中,看来我只能通过record.getMessage()
。
我想这样做,以便我可以使用 object 的属性/方法来更干净地处理处理程序中的逻辑。 否则,我必须将我的处理程序逻辑基于字符串的内容,对于这个特定的用例,这最终会变得非常难看。
如果回答这个问题需要任何额外的上下文,请告诉我。 提前致谢。
some_obj
将存储在LogRecord
的msg
属性中:这个简单的脚本
import logging
class MyClass(object):
def __str__(self):
return 'foo'
class MyHandler(logging.Handler):
def emit(self, record):
print('%r: %s' % (record.msg, record.msg))
logger = logging.getLogger()
logger.addHandler(MyHandler())
some_obj = MyClass()
logger.warning(some_obj)
运行时应该打印这样的内容:
<__main__.MyClass object at 0x0000000002934400>: foo
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.