伐木魔术

大家好.
我只是试图在我的日志代码中添加更多的粒度,
因为从信息(级别20)到调试(级别10)的跳跃有点太大了.
我在考虑借用Java的几个级别:FINE(18),FINER
(16)和最好(14).
这就是我尝试过的:
Log=logging.getLogger(AppName)
Logging.FINE=18
LOGGING.FINER=16
Logging.FINEST=14
Log.fine=lambda msg,self=log,Level=logging.FINE:self.log(Level,
味精)
Log.finer=lambda msg,self=log,Level=logging.FINER:self.log(Level,
味精)
Log.finest=lambda msg,self=log,Level=logging.FINEST:
Self.log(级别,消息)
我可以扩展这个来支持Kwargs,等等,但这是我最不重要的
有问题.
真正的问题是,通过将这个额外的方法添加到堆栈中,
日志记录模块错误地报告模块名称/行号.我
假设这是因为logging.log(...)访问堆栈以找出
它是从哪里被调用的.
有人知道我可以将这样的方法添加到我的日志对象中,并且仍然拥有
是否正确地报告了日志消息的上下文?
感谢所有提前到来的人.

# 回答1

ni*@gmail.com写道:
尝试使用addLevelName(这将确保您的级别名称为
在日志中正确格式化),并尝试创建您自己的记录器
子类,其中包含您想要的自定义方法.
日志记录系统确实遍历堆栈,查找堆栈帧
其对应的源文件不是日志记录包本身.什么
打印的是模块名称/文件编号吗?
向您致敬,
Vinay Sajip

标签: python

添加新评论