如何防止快捷方式日志功能覆盖lineno与python日志记录?

时间:2016-02-19 16:53:18

标签: python logging

假设我需要为记录器系统地添加一些额外的信息,然后这个记录器将在某些类中使用。

我会使用看起来有点像这样的模式:

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行的代码)?或者“记录的快捷方式”功能注定要像这样?

0 个答案:

没有答案
相关问题