import logging
#创建 logger对象
logger=logging.getLogger('sihy')
#设置 logger级别
logger.setLevel(logging.INFO)
#创建 handler日志处理器
fh=logging.FileHandler('test.log',encoding='utf-8')
#创建 handler在控制台打印
ch=logging.StreamHandler()
# 设置日志输出格式
formatter=logging.Formatter(
fmt="%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d] - %(message)s",
datefmt="%Y-%m-%d %X"
)
# 给 handler设置输出日志格式
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 为 logger 添加日志处理器
logger.addHandler(fh)
logger.addHandler(ch)
# 输出日志
logger.debug('我是 debug')
logger.warning('我是 warn')
logger.info('我是 info')
logger.error('我是 error')
输出结果
2021-01-14 19:43:16 WARNING [sihy] [log_demo.py (<module>:30] - 我是 warn
2021-01-14 19:43:16 INFO [sihy] [log_demo.py (<module>:31] - 我是 info
2021-01-14 19:43:16 ERROR [sihy] [log_demo.py (<module>:32] - 我是 error
没有输出 debug,因为设置了logger.setLevel(logging.INFO) 是 info,只打印比 info 小的级别
关于日志多次打印
使用单例模式,无论创建多少个实例,也只创建一个