就不介绍logger基础配置了
如何创建多个logger对象,输出到多个文件
import logging
from datetime import datetime
def get_logger(name):
logger = logging.getLogger(name)
# 创建一个handler,用于写入日志文件
filename = f'{datetime.now().date()}_{name}.log'
fh = logging.FileHandler(filename, mode='w+', encoding='utf-8')
# 再创建一个handler用于输出到控制台
ch = logging.StreamHandler()
# 定义输出格式(可以定义多个输出格式例formatter1,formatter2)
formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s')
# 定义日志输出层级
logger.setLevel(logging.DEBUG)
# 定义控制台输出层级
# logger.setLevel(logging.DEBUG)
# 为文件操作符绑定格式(可以绑定多种格式例fh.setFormatter(formatter2))
fh.setFormatter(formatter)
# 为控制台操作符绑定格式(可以绑定多种格式例ch.setFormatter(formatter2))
ch.setFormatter(formatter)
# 给logger对象绑定文件操作符
logger.addHandler(fh)
# 给logger对象绑定文件操作符
logger.addHandler(ch)
return logger
if __name__ == "__main__":
log1 = get_logger('logger1')
log2 = get_logger('logger2')
log1.debug("This is a debug log.")
log1.info("This is a info log.")
log1.warning("This is a warning log.")
log1.error("This is a error log.")
log1.critical("This is a critical log.")
log2.debug("This is a debug log.")
log2.info("This is a info log.")
log2.warning("This is a warning log.")
log2.error("This is a error log.")
log2.critical("This is a critical log.")
输出结果:
2022-03-30 17:24:23,129 logger1 DEBUG This is a debug log.
2022-03-30 17:24:23,130 logger1 INFO This is a info log.
2022-03-30 17:24:23,130 logger1 WARNING This is a warning log.
2022-03-30 17:24:23,130 logger1 ERROR This is a error log.
2022-03-30 17:24:23,130 logger1 CRITICAL This is a critical log.
2022-03-30 17:24:23,130 logger2 DEBUG This is a debug log.
2022-03-30 17:24:23,130 logger2 INFO This is a info log.
2022-03-30 17:24:23,131 logger2 WARNING This is a warning log.
2022-03-30 17:24:23,131 logger2 ERROR This is a error log.
2022-03-30 17:24:23,131 logger2 CRITICAL This is a critical log.