python 笔记&logging

import logging
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler('del_dir_all.log', encoding='utf-8'),
        logging.StreamHandler()
    ]
)

logging.basicConfig() 是 Python 日志模块的「快速配置函数」,用于设置日志系统的默认行为。如果不调用该函数,日志会使用默认配置(只输出 WARNING 及以上级别,打印到控制台,格式简单)。

level

作用:设置日志的「输出级别阈值」—— 只有级别 大于等于 该阈值的日志,才会被记录 / 打印。

日志级别(从低到高)

级别常量 数值 说明
logging.DEBUG 10 调试信息(开发时用)
logging.INFO 20 普通信息(正常运行状态)
logging.WARNING 30 警告信息(潜在问题)
logging.ERROR 40 错误信息(功能异常)
logging.CRITICAL 50 严重错误(程序崩溃)

当前配置效果:只输出 INFOWARNINGERRORCRITICAL 级别的日志,DEBUG 级别的日志会被过滤掉(不输出)。

format

作用:定义日志的「输出格式」,通过占位符(%(xxx)s)指定日志中包含的字段。

常用占位符说明

占位符 含义
%(asctime)s 日志记录的时间(可读格式)
%(levelname)s 日志级别名称(如 INFO/ERROR)
%(message)s 日志的具体内容(用户自定义信息)

格式效果示例

  • 2025-11-26 14:30:00,123 - INFO - 删除过期文件: /data/logs/20250101.log (大小: 1024字节)
    2025-11-26 14:30:01,456 - ERROR - 处理路径 /data/cache/old 时出错: 权限不足

handlers=[...]

作用:指定日志的「输出目标」(Handler 是日志的 “处理器”,负责将日志发送到不同地方)。
当前配置的两个 Handler
  • logging.FileHandler('cleanup.log', encoding='utf-8')
  • 「文件处理器」:将日志写入到指定文件中。
  • 参数说明:
    • 'del_dir_all.log':日志文件路径 + 名称(当前目录下生成 cleanup.log 文件,若已存在则追加内容)。
    • encoding='utf-8':文件编码格式,避免中文日志出现乱码(关键参数)。
  • logging.StreamHandler()
    • 「流处理器」:将日志打印到「控制台」(默认是 sys.stdout,即命令行 / 终端)。
    • 无额外参数:使用默认配置,直接输出到控制台。

总述

执行这段配置后,后续代码中使用 logging.xxx() 记录的日志会同时满足以下效果:
  1. 输出级别:只记录 INFO 及以上级别的日志(过滤调试信息)。
  2. 输出格式:每条日志包含「时间 + 级别 + 内容」,格式统一易读。
  3. 输出目标
    • 保存到文件:当前目录的 cleanup.log(UTF-8 编码,追加模式)。
    • 打印到控制台:运行程序的终端 / 命令行窗口。

补充说明

  • 若想输出 DEBUG 级别的日志(比如开发调试时),可将 level=logging.DEBUG
  • 若不想打印到控制台,只需移除 logging.StreamHandler()(仅保留文件输出)。
  • 日志文件会持续追加,若需按日期分割(如每天一个日志文件),需使用 RotatingFileHandler 或第三方库(如 logging.handlers.TimedRotatingFileHandler)。

以上注释来自于豆包摘录

 

 

 

THE END
分享
二维码
打赏
海报
python 笔记&logging
import logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', handlers=[ logg……
<<上一篇
下一篇>>