python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python记录日志

Python记录日志的完整指南

作者:detayun

在Python开发中,日志记录是监控程序运行、排查问题的核心手段,本文基于Python内置的logging模块,结合最佳实践,带你系统掌握日志记录的完整方法,需要的朋友可以参考下

一、为什么需要日志记录?

二、基础使用:5分钟快速上手

import logging

# 创建基础配置
logging.basicConfig(
    level=logging.INFO,  # 设置日志级别
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.StreamHandler(),  # 输出到控制台
        logging.FileHandler('app.log')  # 输出到文件
    ]
)

# 创建记录器
logger = logging.getLogger('my_app')

# 记录不同级别的日志
logger.debug('调试信息')
logger.info('程序正常启动')
logger.warning('磁盘空间不足')
logger.error('数据库连接失败')
logger.critical('系统崩溃')

三、核心组件深度解析

日志级别(从低到高)

五大核心组件

配置方式对比

配置方式适用场景优点
basicConfig()简单脚本/快速原型一行代码完成基础配置
代码配置中小型项目灵活可控
配置文件大型项目/团队协作分离配置与代码
字典配置动态配置/12因子应用兼容环境变量

四、高级用法与最佳实践

1. 日志轮转(避免日志文件过大)

from logging.handlers import RotatingFileHandler

# 每个文件10MB,保留3个备份
handler = RotatingFileHandler(
    'app.log', 
    maxBytes=10*1024*1024, 
    backupCount=3
)
logger.addHandler(handler)

2. 异步日志(提升性能)

from logging.handlers import QueueHandler, QueueListener
import queue
import threading

log_queue = queue.Queue(-1)
listener = QueueListener(log_queue, *logger.handlers)
listener.start()

logger.addHandler(QueueHandler(log_queue))

3. 上下文信息记录(如请求ID)

from logging import LoggerAdapter

class RequestContext:
    def __init__(self, request_id):
        self.request_id = request_id

adapter = LoggerAdapter(logger, {'request_id': 'REQ123'})
adapter.info('处理用户请求')
# 输出:[2025-09-04 10:00:00] - my_app - INFO - REQ123 - 处理用户请求

4. 敏感信息过滤

class SensitiveFilter:
    def filter(self, record):
        msg = record.msg
        # 替换敏感信息(如密码)
        msg = msg.replace('password=123456', 'password=******')
        record.msg = msg
        return True

logger.addFilter(SensitiveFilter())

五、常见问题解决方案

1. 日志重复记录问题

2. 多线程日志安全

3. 日志文件权限问题

mkdir /var/log/myapp
chmod 775 /var/log/myapp
chown -R appuser:appgroup /var/log/myapp

六、企业级日志架构建议

日志分级策略

集中化日志管理

日志格式规范

结语

掌握Python日志记录不仅是开发的基本功,更是构建可维护、可观测系统的基石。从简单的print()替换开始,逐步掌握格式化、处理器配置、日志轮转等高级技巧,最终构建符合企业级标准的日志系统。

最佳实践建议

  1. 始终使用logging模块代替print()
  2. 生产环境至少配置两个Handler(控制台+文件)
  3. 敏感信息必须脱敏处理
  4. 定期审查日志策略(建议每季度)

通过本文的系统讲解和代码示例,相信你已经具备设计专业日志系统的能力。立即在项目中实践这些技巧,让你的Python应用具备工业级的可观测性吧!

到此这篇关于Python记录日志的完整指南的文章就介绍到这了,更多相关Python记录日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文