欢迎访问宙启技术站
智能推送

使用get_logger()函数将日志记录到文件和控制台的方法

发布时间:2023-12-24 06:07:32

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()函数,我们可以灵活地将日志信息同时记录到文件和控制台,方便对项目进行日志信息的记录和调试。