假设我需要为记录器系统地添加一些额外的信息,然后这个记录器将在某些类中使用。
我会使用看起来有点像这样的模式:
import logging
logger = logging.getLogger(__name__)
format_ = '%(asctime)s %(levelname)s [%(name)s: %(lineno)s] -- %(message)s'
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter(format_))
logger.addHandler(handler)
logger.setLevel(logging.INFO)
class A(object):
def log_thing(self, msg, *args, **kwargs):
logger.info(msg, *args, **kwargs)
def do_something(self):
# Some code here
self.log_thing('Everything is ok')
if __name__ == "__main__":
a = A()
a.do_something()
但是,如果运行此代码,您会注意到“lineno”将显示为“logger.info”的实际代码完成的行(第13行)。
是否有一种简单的方法来阻止此行为,并打印名为“log_thing”的代码的亚麻(第17行的代码)?或者“记录的快捷方式”功能注定要像这样?