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

使用lib.utilsget_logger()函数实现Python程序的调试日志记录

发布时间:2023-12-15 14:58:20

在Python中,我们可以使用logging模块来记录程序的调试日志。然而,对于大型项目来说,为每个模块单独定义一个logger对象并进行配置会变得繁琐。为了简化日志记录的过程,我们可以使用自定义的工具函数get_logger()

get_logger()函数的实现如下所示:

import logging

def get_logger(name, level=logging.DEBUG, format='%(asctime)s [%(levelname)s] %(message)s', file=None):
    logger = logging.getLogger(name)
    logger.setLevel(level)

    formatter = logging.Formatter(format)

    if file:
        file_handler = logging.FileHandler(file)
        file_handler.setLevel(level)
        file_handler.setFormatter(formatter)
        logger.addHandler(file_handler)

    console_handler = logging.StreamHandler()
    console_handler.setLevel(level)
    console_handler.setFormatter(formatter)
    logger.addHandler(console_handler)

    return logger

这个函数接受四个参数:

- name: logger的名称。

- level: 日志的记录级别,默认为logging.DEBUG

- format: 日志记录的格式,默认为'%(asctime)s [%(levelname)s] %(message)s'

- file: 将日志记录到文件的路径,默认为None,表示不记录到文件。

该函数返回一个logger对象,我们可以利用该对象进行日志记录。

使用例子如下:

from lib.utils import get_logger

# 创建一个全局的logger对象
logger = get_logger(__name__, level=logging.DEBUG, file='debug.log')

def func1():
    logger.debug('进入了func1函数')

def func2():
    logger.debug('进入了func2函数')

def main():
    logger.info('程序开始执行')
    func1()
    func2()
    logger.info('程序结束执行')

if __name__ == '__main__':
    main()

在这个例子中,我们首先导入了自定义的工具函数get_logger()。接下来,我们通过调用get_logger()函数创建了一个全局的logger对象,并指定了日志记录级别为logging.DEBUG,同时将日志记录到了文件debug.log中。

函数func1()func2()分别记录了进入函数的调试信息,而在main()函数中,我们使用logger.info()记录了程序的开始和结束信息。

当我们运行这段代码时,会将日志记录到控制台,并同时将记录写入到文件debug.log中。

总结来说,利用get_logger()函数可以更简洁地记录Python程序的调试日志。我们可以通过设置不同的日志级别和输出路径来满足不同的需求。