使用get_logger()函数将日志记录到文件和控制台的方法
get_logger()函数是Python中常用的日志记录功能,它可以将日志信息输出到文件和控制台。下面是使用get_logger()函数将日志记录到文件和控制台的方法以及一个使用例子。
首先,我们需要导入logging模块:
import logging
然后,可以定义一个get_logger()函数来获取日志记录器。该函数通常在项目中的某个模块中定义,供其他模块调用。get_logger()函数可以在一次调用后返回相同的日志记录器实例,以确保在整个项目中的日志信息是一致的。
下面是一个示例的get_logger()函数的实现:
def get_logger(log_file):
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
# 将日志记录到文件
file_handler = logging.FileHandler(log_file)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
# 将日志记录到控制台
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
return logger
在上面的get_logger()函数中,我们首先创建了一个根日志记录器,然后设置日志记录的级别为DEBUG,表示记录所有级别的日志信息。
接着,我们创建了一个格式化器(formatter),用于设置日志记录的格式。这里使用的格式字符串是'%(asctime)s - %(levelname)s - %(message)s',包括了时间、日志级别和日志信息。
然后,我们创建了一个通过logging.FileHandler()方法实例化的文件处理器(file_handler),用于将日志记录到文件中。设置文件处理器的级别为DEBUG,并将格式化器设置给文件处理器。最后,将文件处理器添加到根日志记录器中。
类似地,我们也创建了一个通过logging.StreamHandler()方法实例化的控制台处理器(console_handler),用于将日志记录输出到控制台。设置控制台处理器的级别为DEBUG,并将格式化器设置给控制台处理器。最后,将控制台处理器添加到根日志记录器中。
最后,get_logger()函数返回了根日志记录器的实例。
下面是一个使用get_logger()函数将日志记录到文件和控制台的例子:
# 导入get_logger函数
from mylogger import get_logger
# 创建日志记录器
logger = get_logger('mylog.log')
# 记录日志信息
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')
在上面的例子中,我们首先从定义get_logger()函数的模块中导入get_logger()函数。
然后,我们通过get_logger()函数创建了一个日志记录器logger,并将日志记录到文件mylog.log中。
接着,我们使用logger记录了不同级别的日志信息,如debug、info、warning、error和critical。
最后,如果我们打开mylog.log文件,可以看到以下日志信息:
2022-01-01 12:00:00,000 - DEBUG - This is a debug message 2022-01-01 12:00:01,000 - INFO - This is an info message 2022-01-01 12:00:02,000 - WARNING - This is a warning message 2022-01-01 12:00:03,000 - ERROR - This is an error message 2022-01-01 12:00:04,000 - CRITICAL - This is a critical message
同时,这些日志信息也会在控制台输出:
2022-01-01 12:00:00,000 - DEBUG - This is a debug message 2022-01-01 12:00:01,000 - INFO - This is an info message 2022-01-01 12:00:02,000 - WARNING - This is a warning message 2022-01-01 12:00:03,000 - ERROR - This is an error message 2022-01-01 12:00:04,000 - CRITICAL - This is a critical message
通过使用get_logger()函数,我们可以灵活地将日志信息同时记录到文件和控制台,方便对项目进行日志信息的记录和调试。
