使用Python日志记录模块时重复的日志输出

发布于 2021-01-29 19:35:12

我正在使用python记录器。以下是我的代码:

import os
import time
import datetime
import logging
class Logger :
   def myLogger(self):
      logger = logging.getLogger('ProvisioningPython')
      logger.setLevel(logging.DEBUG)
      now = datetime.datetime.now()
      handler=logging.FileHandler('/root/credentials/Logs/ProvisioningPython'+ now.strftime("%Y-%m-%d") +'.log')
      formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
      handler.setFormatter(formatter)
      logger.addHandler(handler)
      return logger

我的问题是我在每个logger.info呼叫的日志文件中都有多个条目。我该如何解决?

关注者
0
被浏览
64
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    logging.getLogger()已经是一个单例。(文件

    问题在于,每次调用时myLogger(),都会向实例添加另一个处理程序,这将导致日志重复。

    也许像这样?

    import os
    import time
    import datetime
    import logging
    
    loggers = {}
    
    def myLogger(name):
        global loggers
    
        if loggers.get(name):
            return loggers.get(name)
        else:
            logger = logging.getLogger(name)
            logger.setLevel(logging.DEBUG)
            now = datetime.datetime.now()
            handler = logging.FileHandler(
                '/root/credentials/Logs/ProvisioningPython' 
                + now.strftime("%Y-%m-%d") 
                + '.log')
            formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
            handler.setFormatter(formatter)
            logger.addHandler(handler)
            loggers[name] = logger
    
            return logger
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看