前言
遇到这段代码
# LOGGING_NAMESPACE = 'diora'
# Create logger.
logger = logging.getLogger(LOGGING_NAMESPACE)
# NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL
logger.setLevel(logging.INFO)
# Create file handler. # 文件日志
fh = logging.FileHandler(log_file)
fh.setLevel(logging.INFO)
# Also log to console. # 控制台日志
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
# create formatter and add it to the handlers
# %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”
# %(levelname)s 文本形式的日志级别
# %(message)s 用户输出的消息
formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(fh)
logger.addHandler(ch)
# HACK: Weird fix that counteracts other libraries (i.e. allennlp) modifying
# the global logger.
if len(logger.parent.handlers) > 0:
logger.parent.handlers.pop()
logger应该是一个全局变量
总结
创建logger最简单是以下四步:
- logger = logging.getLogger(projectname);logger.setLevel()
- file_handler = logging.FileHandler(logfile);file_handler.setLevel()
- console_handler = logging.StreamHandler();console_handler.setLevel()
- formatter = logging.Formatter(’%(asctime)s [%(levelname)s] %(message)s’)
- file_handler.setFormatter();console_handler.setFormatter()
- logger.addHandler(fh);logger.addHandler(ch)