⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Python logging 日志

学习logging模块 · 难度:进阶 · +15XP

Python logging 日志

Python logging 日志 — 记录程序运行状态

学习前的准备

打开终端,输入 python 进入交互式解释器。logging 模块是 Python 标准库的一部分。

为什么需要日志?print() 不够吗?

很多初学者依赖 print() 输出信息。但 print() 有致命问题:无法区分消息重要程度、无法灵活输出到文件、无法灵活开关。logging 模块解决了这些。

import logging
logging.basicConfig(level=logging.INFO)
logging.info("程序开始")
logging.debug("正在处理数据...")  # 这条不会显示(级别低于 INFO)
logging.error("错误:文件不存在")

日志的五个级别

级别数值含义使用场景
DEBUG10调试细节开发时的变量追踪
INFO20一般信息程序运行关键节点
WARNING30警告磁盘空间低等
ERROR40错误操作失败但可继续
CRITICAL50严重错误程序无法继续
logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s [%(levelname)s] %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S'
)
logging.info("服务器启动成功,端口 8080")
logging.warning("磁盘使用率达到 80%")
logging.error("数据库连接失败,将重试")

同时输出到控制台和文件

import logging
logger = logging.getLogger("my_app")
logger.setLevel(logging.DEBUG)

file_handler = logging.FileHandler("app.log", encoding="utf-8") file_handler.setLevel(logging.DEBUG)

console_handler = logging.StreamHandler() console_handler.setLevel(logging.WARNING)

logger.addHandler(file_handler) logger.addHandler(console_handler)

logger.debug("这条只写入文件") logger.warning("这条同时到文件和控制台")

最佳实践

  1. 每个模块使用 logger = logging.getLogger(__name__)
  2. 不要在库代码中使用 basicConfig()。
  3. 生产环境中日志级别设为 INFO 或 WARNING。

小结

logging 模块用五个级别区分消息重要性。basicConfig 用于简单场景,多个 handler 用于同时输出到不同目标。从今天起,用日志替换你代码中的 print()。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 152 篇
0 完成
🔥 0