python logging 最佳实践

# 创建一个logger, 这里的级别DEBUG是总开关,控制了下面file 和console handler的级别
logger = logging.getLogger('')
logger.setLevel(logging.DEBUG)

# 创建一个handler,用于写入日志文件, 并定义输出格式
fh = logging.FileHandler(os.path.basename(__file__).replace(".py", ".log"))
fh.setLevel(logging.DEBUG)
ffmt = logging.Formatter('%(asctime)s %(process)d %(thread)d %(levelname)s @ %(filename)s-%(lineno)d: %(message)s')
fh.setFormatter(ffmt)

# 再创建一个handler,用于输出到控制台,仅输出错误信息
ch = logging.StreamHandler()
ch.setLevel(logging.WARNING)
cfmt = logging.Formatter('%(asctime)s %(levelname)s: %(message)s')
ch.setFormatter(cfmt)

# 给logger添加handler
logger.addHandler(ch)
logger.addHandler(fh)

prod_log = logging.getLogger('prod')
prod_log.setLevel(logging.ERROR)

#记录日志, 日志文件记录了所有级别,控制台只记录warning及以上等级
logger.debug('debug')
logger.info('info')
logger.warning('warning')
logger.error('error')
logger.critical('critical')


#记录日志,由于 prod_log.setLevel(logging.ERROR) 语句,file 和 console 都只记录ERROR 以上级别的消息
prod_log.debug('prod debug')
prod_log.info('prod info')
prod_log.warning('prod warning')
prod_log.error('prod error')
prod_log.critical('prod critical')


你可能感兴趣的:(python)