Python: logging日志重复的原因是handler叠加了
-
使用if not _logger.handlers
来控制是否操作addHandler,
假如已有handler,就不需要再次添加了 -
实现方法还有很多,
最笨的就是用不同的object来写不同的日志,但这样一旦需要维护时,成本会很高 -
还有一种是
一直在传递main启动脚本时创建的logging Object到class里使用
但是这样写class就感觉很怪了,这个class被某个参数给拖住的感觉
殊途同归,它的最终切入点就是搞定记录日志时,handler不会被重复加入
_logger = logging.getLogger(‘Order’)
# print(‘创建_logger时的handlers:[{}]’.format(_logger.handlers))
if not _logger.handlers:
_logger.setLevel(logging.INFO)
_formatter = logging.Formatter(‘%(asctime)s %(name)s/%(levelname)s %(lineno)d: %(message)s’, datefmt=’%m-%d %H:%M:%S’)
_fhDay = logging.FileHandler(filename=_logDay, encoding=”utf-8″)
_fhDay.setLevel(logging.INFO)
_fhDay.setFormatter(_formatter)
_fhAll = logging.FileHandler(filename=_logAll, encoding=”utf-8″)
_fhAll.setLevel(logging.INFO)
_fhAll.setFormatter(_formatter)
_logger.addHandler(_fhDay)
_logger.addHandler(_fhAll)
# print(‘返回_logger时的handlers:[{}]’.format(_logger.handlers))