# 创建一个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')