【发布时间】:2015-09-18 17:25:32
【问题描述】:
以下是mylogger.py的内容:
def get_logger(name='my_super_logger'):
log = logging.getLogger(name)
log.setLevel(logging.DEBUG)
formatter = logging.Formatter(fmt='%(asctime)s %(name)s %(message)s',
datefmt='%m/%d/%Y %I:%M:%S %p')
if not len(log.handlers):
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
log.addHandler(ch)
# print(id(log))
return log
以下是myscript.py的内容:
from mylogger import get_logger
_logger = get_logger()
_logger.info('trying info')
_logger.debug('trying debug')
但是我面临两个问题。它会打印两次日志,并且格式化程序每次都无法正常工作:
09/18/2015 09:59:54 PM my_super_logger trying info
INFO:my_super_logger:trying info
09/18/2015 09:59:54 PM my_super_logger trying debug
DEBUG:my_super_logger:trying debug
我的get_logger 代码到底有什么问题?
我需要自定义格式。但是我发现如果不添加处理程序,我就无法添加formatter。这就是我添加StreamHandler 的原因。 if 块的原因在这个answer 中提到。没有它,我会打印出重复的日志消息。
【问题讨论】:
标签: python python-2.7 logging