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

使用lib.utilsget_logger()函数进行日志分级管理

发布时间:2024-01-02 04:40:44

在Python开发中,使用日志是一种常见的方式来记录应用程序的状态、错误和调试信息。lib.utils模块中的get_logger()函数是一个方便的工具函数,用于创建和配置logger对象,可以简化日志的分级管理。

get_logger()函数接受一个参数name,表示logger的名称。通过指定不同的名称,可以创建不同的logger对象,从而对不同的模块或者组件进行单独的日志管理。

下面是get_logger()函数的代码实现:

import logging

def get_logger(name):
    logger = logging.getLogger(name)
    logger.setLevel(logging.DEBUG)
    
    # 创建一个输出到控制台的Handler
    console_handler = logging.StreamHandler()
    console_formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s')
    console_handler.setFormatter(console_formatter)
    logger.addHandler(console_handler)
    
    # 创建一个输出到文件的Handler
    file_handler = logging.FileHandler('log.log')
    file_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    file_handler.setFormatter(file_formatter)
    logger.addHandler(file_handler)
    
    return logger

上述代码中,logger.setLevel(logging.DEBUG)表示将logger的日志级别设置为DEBUG,这样会记录所有的日志消息,包括DEBUG、INFO、WARNING、ERROR和CRITICAL。

get_logger()函数还创建了两个Handler对象,一个用于将日志输出到控制台,另一个用于将日志输出到文件。其中,console_formatter和file_formatter分别定义了控制台和文件日志的输出格式。

使用该函数可以轻松地创建logger对象并进行日志记录。下面是一个例子:

from lib.utils import get_logger

# 创建logger对象
logger = get_logger(__name__)

def add(a, b):
    try:
        sum = a + b
        logger.debug('Addition: {} + {} = {}'.format(a, b, sum))
        return sum
    except Exception as e:
        logger.error('Error occurred: {}'.format(str(e)))

if __name__ == '__main__':
    logger.info('Starting application...')
    result = add(2, 3)
    logger.info('Result: {}'.format(result))
    logger.info('Application finished.')

在上述例子中,首先使用get_logger()函数创建了一个logger对象,名称为当前模块的名称。然后,在add()函数中,使用logger对象记录了一条DEBUG级别的日志,该消息将包含两个参数a和b的值和它们的和。如果在执行过程中出现异常,将记录一条ERROR级别的日志,其中包含异常的详细信息。

在最后的if __name__ == '__main__'条件下,logger对象还记录了两条INFO级别的日志,用于标记应用程序的开始和结束。