2016-06-10 179 views
0

我有一个问题,当我不想记录任何日志时,我的代码会中断。我控制是否希望使用'-v'选项查看日志记录。我也有一个'd'选项,它也设置了调试模式。空记录器问题(日志记录)

现在,当没有指定'-v'选项时,我的代码会中断。

def initLogging(cfg): 

    cformat = logging.Formatter('%(asctime)s %(message)s', "%Y-%m-%d %H:%M:%S %Z") 
    clogger = None 

    try: 

     if cfg['debug']: 
      loglevel = logging.DEBUG 
     else: 
      loglevel = logging.INFO 

     logger = logging.getLogger() 
     logger.setLevel(loglevel) 

     if not cfg['verbose']: 
      logger.addHandler(logging.NullHandler()) 
      return 
     else: 
      clogger = logging.StreamHandler() 
      clogger.setLevel(loglevel) 
      clogger.setFormatter(cformat) 
      logger.addHandler(clogger) 

    except Exception, error: 
     sys.stderr.write("Error: Unable to initialize logging: %s\n" % error) 
     sys.stderr.flush() 
     sys.exit(1) 

    logger.info("Script initiated.") 

    return logger 

我得到的错误是这样的:

'NoneType' object has no attribute 'info' 

这发生在它到达记录器声明是这样的:我如何可以调整这一点,以便它的工作原理,当脚本

logger.info("get_repl_actions(): executing REST query 'GET %s'" % rurl) 

没有'-v'被调用?

+0

是否使用记录仪功能之外? – Li357

+0

是的,但我刚刚发现我的问题......我应该是“返回记录器”时,我从if条件的第一个条件中不返回任何内容。 – BenH

+0

很高兴听到! – Li357

回答

0

尝试以下操作:

if not cfg['verbose']: 
    logger.addHandler(logging.NullHandler()) 
    return logger