全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-19 8 分钟 ✍️ juanwangdev

Python logging日志模块

logging模块是 Python 标准日志库,支持分级日志、格式化和多种输出。

基本使用

Python
import logging

# 配置基本日志
logging.basicConfig(level=logging.DEBUG)

logging.debug("调试信息")
logging.info("普通信息")
logging.warning("警告信息")
logging.error("错误信息")
logging.critical("严重错误")

日志级别

级别数值用途
DEBUG10调试详情
INFO20普通信息
WARNING30警告
ERROR40错误
CRITICAL50严重错误

配置日志格式

Python
import logging

logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S'
)

logging.info("格式化日志输出")
# 输出: 2024-05-19 10:30:00 - root - INFO - 格式化日志输出

输出到文件

Python
import logging

logging.basicConfig(
    level=logging.INFO,
    filename='app.log',
    filemode='a',  # 追加模式
    format='%(asctime)s - %(levelname)s - %(message)s'
)

logging.info("日志写入文件")

创建Logger对象

Python
import logging

# 创建自定义 Logger
logger = logging.getLogger('my_app')
logger.setLevel(logging.DEBUG)

# 创建处理器
console_handler = logging.StreamHandler()
file_handler = logging.FileHandler('app.log')

# 设置处理器级别
console_handler.setLevel(logging.INFO)
file_handler.setLevel(logging.DEBUG)

# 创建格式器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)

# 添加处理器
logger.addHandler(console_handler)
logger.addHandler(file_handler)

logger.debug("调试信息(仅文件)")
logger.info("普通信息(文件和控制台)")

格式化字段

字段说明
%(asctime)s时间戳
%(name)sLogger名称
%(levelname)s日志级别
%(message)s日志消息
%(filename)s文件名
%(lineno)d行号
%(funcName)s函数名

日志异常信息

Python
import logging

try:
    result = 1 / 0
except Exception as e:
    # exc_info=True 记录异常堆栈
    logging.error("发生异常", exc_info=True)
    # 或使用 exception 方法
    logging.exception("发生异常")  # 自动包含堆栈

配置字典方式

Python
import logging
import logging.config

LOGGING_CONFIG = {
    'version': 1,
    'formatters': {
        'default': {
            'format': '%(asctime)s - %(levelname)s - %(message)s'
        }
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'default',
            'level': 'INFO'
        },
        'file': {
            'class': 'logging.FileHandler',
            'filename': 'app.log',
            'formatter': 'default',
            'level': 'DEBUG'
        }
    },
    'loggers': {
        'my_app': {
            'handlers': ['console', 'file'],
            'level': 'DEBUG',
            'propagate': False
        }
    }
}

logging.config.dictConfig(LOGGING_CONFIG)
logger = logging.getLogger('my_app')
logger.info("字典配置日志")

propagate 日志传播

Python
import logging

# 子 Logger 日志传播到父 Logger
logger = logging.getLogger('my_app.module')
logger.info("日志传播到父 Logger")

# 设置 propagate=False 禁止传播
logger.propagate = False

要点总结

  • basicConfig() 快速配置基本日志
  • 五个日志级别:DEBUG、INFO、WARNING、ERROR、CRITICAL
  • Logger、Handler、Formatter 组成日志系统
  • getLogger(name) 创建命名 Logger
  • StreamHandler 控制台输出,FileHandler 文件输出
  • logging.exception() 自动记录异常堆栈
  • dictConfig() 支持字典配置
  • propagate 控制日志向父 Logger 传播

📝 发现内容有误?点击此处直接编辑

← 上一篇 Python 类型注解语法
下一篇 → Python pdb调试器
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库