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

利用lib.utilsget_logger()函数在Python中记录多个模块的日志

发布时间:2023-12-15 15:00:56

在Python中,我们可以使用标准库的logging模块来记录日志。为了方便地在多个模块中使用同一个日志记录器,可以定义一个工具函数get_logger()

首先,我们需要导入logging模块。然后,在lib包下创建一个utils.py文件,定义get_logger()函数如下:

import logging

def get_logger(logger_name):
    logger = logging.getLogger(logger_name)
    logger.setLevel(logging.DEBUG)

    formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")

    # 创建一个文件处理器,将日志写入文件
    file_handler = logging.FileHandler(f"{logger_name}.log")
    file_handler.setLevel(logging.DEBUG)
    file_handler.setFormatter(formatter)

    # 创建一个输出处理器,将日志打印到控制台
    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.INFO)
    console_handler.setFormatter(formatter)

    # 为日志记录器添加处理器
    logger.addHandler(file_handler)
    logger.addHandler(console_handler)

    return logger

这个函数接受一个参数logger_name,用于指定日志记录器的名称。它将创建一个日志记录器,并设置日志级别为DEBUG,表示记录所有级别的日志信息。

接下来,我们定义了一个日志格式器formatter,用于指定日志的格式,包括时间、日志级别和日志信息。

然后,我们创建了一个文件处理器file_handler,用于将日志写入到以logger_name命名的日志文件中。该处理器的日志级别也被设置为DEBUG,表示记录所有级别的日志信息。我们还将日志格式器设置给该处理器,以指定日志的格式。

接着,我们创建了一个输出处理器console_handler,用于将日志打印到控制台。该处理器的日志级别被设置为INFO,表示只记录INFO级别及以上的日志信息。同样地,我们将日志格式器设置给该处理器。

最后,我们为日志记录器添加文件处理器和输出处理器,并返回该日志记录器。

使用该工具函数记录日志的方法如下:

from lib.utils import get_logger

logger1 = get_logger("module1")
logger2 = get_logger("module2")

logger1.debug("This is a debug message from module1")
logger2.info("This is an info message from module2")

在上面的例子中,我们首先导入了get_logger函数。然后,我们使用该函数创建了两个日志记录器logger1logger2,分别对应了两个模块。

最后,我们调用日志记录器的debuginfo方法,分别记录了一条DEBUG级别和INFO级别的日志信息。

运行上述代码后,在当前目录下会创建两个日志文件module1.logmodule2.log,同时在控制台上输出日志信息。

利用get_logger()函数,我们可以在Python中方便地创建和管理多个模块的日志记录器,从而更好地组织和记录日志信息。注意,每个模块通过不同的logger_name参数创建的日志记录器是独立的,它们可以有不同的日志级别和处理器设置。