Python进阶实例 第37例: 使用 logging 模块自定义日志格式

在前一例中,我们介绍了 logging 的基础用法。
实际开发中,我们一般需要 自定义日志格式,包括时间戳、日志级别、模块名等,以便更好地排查问题。


问题描述:

编写一个日志系统:

  1. 输出日志到控制台;
  2. 设置日志格式:[时间] [级别] 模块: 消息;
  3. 打印不同级别的日志,观察效果。

代码示例:

import logging

# 配置日志格式
log_format = "[%(asctime)s] [%(levelname)s] %(name)s: %(message)s"
logging.basicConfig(
    level=logging.DEBUG,        # 设置日志级别
    format=log_format,          # 设置格式
    datefmt="%Y-%m-%d %H:%M:%S" # 设置时间格式
)

# 获取日志器
logger = logging.getLogger("DemoLogger")

# 打印不同级别日志
logger.debug("这是调试信息,用于开发阶段")
logger.info("这是普通运行日志")
logger.warning("这是警告信息,提醒潜在问题")
logger.error("这是错误信息,程序出错时使用")
logger.critical("这是严重错误,程序可能无法继续运行")

运行结果:

[2025-09-27 14:35:10] [DEBUG] DemoLogger: 这是调试信息,用于开发阶段
[2025-09-27 14:35:10] [INFO] DemoLogger: 这是普通运行日志
[2025-09-27 14:35:10] [WARNING] DemoLogger: 这是警告信息,提醒潜在问题
[2025-09-27 14:35:10] [ERROR] DemoLogger: 这是错误信息,程序出错时使用
[2025-09-27 14:35:10] [CRITICAL] DemoLogger: 这是严重错误,程序可能无法继续运行

步骤说明:

  1. logging.basicConfig
  2. level: 设置日志输出的最低级别(DEBUG < INFO < WARNING < ERROR < CRITICAL)。
  3. format: 定义日志的输出格式。
  4. datefmt: 定义时间格式。
  5. 日志格式占位符
  6. %(asctime)s → 日志时间
  7. %(levelname)s → 日志级别
  8. %(name)s → 日志器名称
  9. %(message)s → 日志消息
  10. 日志级别应用场景
  11. DEBUG → 调试信息
  12. INFO → 正常运行日志
  13. WARNING → 警告
  14. ERROR → 一般错误
  15. CRITICAL → 严重错误

总结:

  • 通过配置 format,日志输出可以变得更有可读性。
  • 开发环境推荐用 DEBUG 级别,生产环境推荐用 WARNING 或更高。
  • 灵活配置日志格式,可以协助我们快速定位问题。
© 版权声明

相关文章

1 条评论

  • 头像
    -梨莓柿吧- 读者

    收藏了,感谢分享

    无记录
    回复