最近在做UI自动化的时候,为了方便使用自己封装了一个logger模块给测试case调用,结果发现
logging.Formatter('[%(asctime)s] - %(filename)s[line:%(lineno)d] - fuc:%(funcName)s- %(levelname)s: %(message)s')输出的文件名、行号、方法名一直是logger文件的,并没有打印出真正调用者的文件名和方法名
然后看了一下logging的源码,发现findCaller方法返回的调用者只是logging文件的调用者,二次封装logging为logger后,我们实际调用的是logger,而logging的调用者是logger,这就是日志打印不对的原因
那么我们只要把 下面这句代码判断条件改为我们自己封装的logger的文件路径即可
记得用os.path.normcase()格式化一下我们调用的封装好的logger路径,否则判断不生效,打印的日志文件名和方法名还是logger的。