只需要调用一次init_log函数来初始化日志配置即可。在代码中,init_log函数会创建一个logger对象,并添加文件处理器和控制台处理器,然后设置日志级别。之后,您可以通过logger对象来记录日志信息。
在调用init_log函数之后,您可以在需要记录日志的地方使用logger对象的不同方法来记录不同级别的日志,如logger.debug(), logger.info(), logger.warning(), logger.error()等。
import logging
import os
import logging.handlers
def init_log(logger_name, log_file_path, log_level=20):
'''
CRITICAL(50): 严重错误,表示程序可能无法继续执行。
ERROR(40): 错误,但是程序仍然可以继续执行。
WARNING(30): 警告信息,表示程序遇到了一些不正常的情况,但是仍然可以继续执行。
INFO(20): 信息性消息,用于记录程序的运行状态或关键事件。
DEBUG(10): 调试信息,用于详细记录程序的运行过程,帮助开发者进行调试。
NOTSET(0): 表示未设置日志级别,会继承上层的日志级别。
:param logger_name:
:param log_file_path:
:param log_level:
:return:
'''
# 创建logger对象
logger = logging.getLogger(logger_name)
# 创建日志目录
log_dir = os.path.dirname(log_file_path)
if not os.path.exists(log_dir):
os.makedirs(log_dir)
# 避免重复添加处理器
if len(logger.handlers) == 0:
# 创建文件处理器
file_handler = logging.FileHandler(log_file_path, mode="a", encoding="utf-8")
file_handler.setLevel(log_level)
# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(log_level)
# 创建格式化器
formatter = logging.Formatter(
fmt='%(asctime)s - %(levelname)s - Model:%(filename)s - Fun:%(funcName)s - Message:%(message)s - Line:%(lineno)d')
# 添加处理器和格式化器
file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)
logger.addHandler(file_handler)
logger.addHandler(console_handler)
# 设置日志级别
logger.setLevel(log_level)
return logger
logger = init_log("MyLogger", "log/mylog.log", log_level=10) # 修改日志文件路径和日志级别为20
print('123')
logger.info("This is an information log.") # 记录一条INFO级别的日志
print('44444444444')
logger.warning("This is a warning log.") # 记录一条WARNING级别的日志
print('55555')