Python 日志函数

编写一个日志输出的函数需要考虑以下几点:

1. 日志的级别(例如:DEBUG、INFO、WARNING、ERROR、CRITICAL)

2. 日志的输出格式

3. 日志的存储方式(控制台输出、文件输出等)

可以使用Python内置的`logging`模块来实现这个功能。下面是一个示例,演示如何编写和配置一个日志输出的函数:

import logging
import os

def setup_logger(log_file=None, log_level=logging.INFO):
    """
    设置日志配置

    参数:
    log_file (str): 日志文件路径,如果为None,则只输出到控制台
    log_level (int): 日志级别,默认为INFO
    """
    # 创建日志记录器
    logger = logging.getLogger('my_logger')
    logger.setLevel(log_level)

    # 创建日志格式
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

    # 创建控制台处理器并设置级别和格式
    console_handler = logging.StreamHandler()
    console_handler.setLevel(log_level)
    console_handler.setFormatter(formatter)
    logger.addHandler(console_handler)

    # 如果提供了日志文件路径,创建文件处理器并设置级别和格式
    if log_file:
        # 创建日志目录(如果不存在)
        os.makedirs(os.path.dirname(log_file), exist_ok=True)
        
        file_handler = logging.FileHandler(log_file)
        file_handler.setLevel(log_level)
        file_handler.setFormatter(formatter)
        logger.addHandler(file_handler)

    return logger

# 使用示例
if __name__ == "__main__":
    # 配置日志,输出到控制台和文件
    logger = setup_logger(log_file='logs/app.log', log_level=logging.DEBUG)
    
    # 输出不同级别的日志
    logger.debug("这是调试信息")
    logger.info("这是一般信息")
    logger.warning("这是警告信息")
    logger.error("这是错误信息")
    logger.critical("这是严重错误信息")

代码说明

1. 导入必要的模块:导入`logging`和`os`模块。

2. 定义`setup_logger`函数

- 参数`log_file`指定日志文件路径。如果为`None`,则只输出到控制台。

- 参数`log_level`指定日志级别,默认为`logging.INFO`。

- 创建日志记录器,并设置日志级别。

- 创建日志格式。

- 创建控制台处理器,设置日志级别和格式,并添加到日志记录器。

- 如果提供了日志文件路径,创建文件处理器,设置日志级别和格式,并添加到日志记录器。

3. 使用示例:配置日志输出到控制台和文件,并输出不同级别的日志信息。

这样,你就可以根据需要将日志输出到控制台或者文件中,并且可以灵活设置日志级别和格式。


Python 日志函数
https://lu0625.top//archives/1719220464618
作者
LJQ
发布于
2024年06月24日
许可协议