Python(logging.Formatter())



logging.Formatter() 是 Python 的 logging 模块中用于定义日志格式的一个类。它帮助用户自定义日志的输出样式,包括日志消息的时间、级别、模块来源等信息。Formatter 的使用可以让日志信息更具可读性和可追踪性。



1. 函数定义

logging.Formatter() 的主要功能是创建一个格式化器对象,用于指定日志消息的显示格式。格式化器将被应用到 Handler(处理器)上,以确保日志消息以特定的格式输出到目标位置(如控制台或文件)。

logging.Formatter(fmt=None, datefmt=None, style='%')

参数:

  • fmt:日志消息的格式字符串。它用于指定日志消息中各个部分的排列方式。可以包括消息内容、时间戳、日志级别、日志记录器名称等。

    一些常见的格式化占位符:

    • %(asctime)s:日志消息的时间戳
    • %(levelname)s:日志级别(如 DEBUG、INFO、WARNING 等)
    • %(name)s:日志记录器的名称
    • %(message)s:日志内容
    • %(filename)s:生成日志的文件名
    • %(funcName)s:生成日志的函数名称
    • %(lineno)d:日志行所在的行号
  • datefmt:指定时间戳的显示格式。默认时间格式为 '%Y-%m-%d %H:%M:%S'。可以自定义以适应应用需求,采用 time.strftime() 格式代码,如 %Y-%m-%d %H:%M:%S 表示“年-月-日 小时:分钟:秒”。

  • style:指定格式字符串的样式,可以为 '% ''{ ' 或者 '$ '

    • %:使用 % 风格(如 %(message)s),这是默认选项。
    • {:使用 {} 风格(如 {message}),类似于 Python 3 的 str.format()
    • $:使用 $ 风格(如 $message),类似于 string.Template

返回值:

logging.Formatter() 返回一个格式化器对象,随后可将其应用到一个或多个处理器上,定义日志消息的输出格式。



2. 示例代码

以下示例展示了如何使用 logging.Formatter 自定义日志的格式和时间显示格式:

import logging

# 创建日志记录器
logger = logging.getLogger("example_logger")
logger.setLevel(logging.DEBUG)

# 创建控制台处理器并设置日志级别
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)

# 定义日志格式和时间格式
formatter = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
                              datefmt="%Y-%m-%d %H:%M:%S")

# 将格式化器应用于处理器
console_handler.setFormatter(formatter)

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

# 记录日志
logger.debug("This is a debug message.")
logger.info("This is an info message.")
logger.warning("This is a warning message.")

输出示例:

2024-11-04 12:00:01 - example_logger - DEBUG - This is a debug message.
2024-11-04 12:00:02 - example_logger - INFO - This is an info message.
2024-11-04 12:00:03 - example_logger - WARNING - This is a warning message.


3. 常见用途

  • 统一日志格式:Formatter 可以确保所有的日志输出以统一的格式记录,方便调试和分析。
  • 不同格式的日志输出:一个日志记录器可以有多个处理器(如 FileHandlerStreamHandler),每个处理器可以使用不同的 Formatter,输出不同格式的日志。


4. 重要特性

  • 时间格式化:可以自定义 datefmt,以使时间戳符合不同的显示要求。
  • 灵活的样式:支持 %{}$ 三种格式化风格,可以根据项目的风格偏好选择合适的样式。
  • 组合多个占位符:可以自由组合 %(asctime)s%(levelname)s 等占位符,生成详细或简洁的日志信息。


5. 其他相关函数和类

  • logging.StreamHandler():用于创建输出到控制台的日志处理器。
  • logging.FileHandler():用于创建输出到文件的日志处理器。
  • logger.setFormatter():用于为处理器指定一个 Formatter 对象。

通过 logging.Formatter(),可以实现具有不同样式和信息的日志记录配置,让调试和维护变得更便捷。



posted @ 2024-11-04 15:28  做梦当财神  阅读(56)  评论(0编辑  收藏  举报