周志洋

个人站

持续学习 才能不被淘汰


Python实用技巧-日志系统详解

日志系统的重要性

日志是应用程序运行状态的重要记录,对于调试、监控、审计和问题排查至关重要。Python的logging模块提供了强大而灵活的日志系统,掌握高级日志技术是开发高质量应用的关键。

日志系统基础

1. 日志级别和配置

import logging
import sys
from datetime import datetime

def logging_basics():
    """日志基础配置"""
    
    # 配置根日志器
    logging.basicConfig(
        level=logging.DEBUG,
        format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
        handlers=[
            logging.StreamHandler(sys.stdout),
            logging.FileHandler('app.log', encoding='utf-8')
        ]
    )
    
    # 创建日志器
    logger = logging.getLogger('myapp')
    
    # 测试不同级别的日志
    logger.debug("这是调试信息")
    logger.info("这是信息日志")
    logger.warning("这是警告信息")
    logger.error("这是错误信息")
    logger.critical("这是严重错误")
    
    print("日志级别测试完成")

logging_basics()

2. 自定义日志器

def custom_logger_example():
    """自定义日志器示例"""
    
    # 创建自定义日志器
    logger = logging.getLogger('custom_app')
    logger.setLevel(logging.DEBUG)
    
    # 清除默认处理器
    logger.handlers.clear()
    
    # 创建控制台处理器
    console_handler = logging.StreamHandler(sys.stdout)
    console_handler.setLevel(logging.INFO)
    
    # 创建文件处理器
    file_handler = logging.FileHandler('custom_app.log', encoding='utf-8')
    file_handler.setLevel(logging.DEBUG)
    
    # 创建格式化器
    console_formatter = logging.Formatter(
        '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
    )
    file_formatter = logging.Formatter(
        '%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s'
    )
    
    # 设置格式化器
    console_handler.setFormatter(console_formatter)
    file_handler.setFormatter(file_formatter)
    
    # 添加处理器
    logger.addHandler(console_handler)
    logger.addHandler(file_handler)
    
    # 测试日志
    logger.info("应用程序启动")
    logger.debug("调试信息:配置加载完成")
    logger.warning("警告:内存使用率较高")
    logger.error("错误:数据库连接失败")
    
    print("自定义日志器测试完成")

custom_logger_example()


转载请注明:周志洋的博客 » Python实用技巧-日志进阶

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦