日志无处不在:Python logging 深度解析与实战应用!!

1. Python logging记录日志基础

1.1. 项目中记录日志为什么很重要

记录日志在项目中是非常重要的,它可以帮助开发者:

  • 调试:通过日志记录程序的执行过程,可以帮助开发者快速定位错误源。
  • 监控:日志可以用于监控系统的健康状况,及时发现潜在问题。
  • 分析:分析日志可以帮助了解用户行为、系统性能以及其他关键指标,进而做出优化决策。
  • 审计与合规:日志为操作提供了可追溯的记录,特别是在需要满足合规要求时,日志是不可或缺的。
  • 错误追踪:当系统出现问题时,日志可以帮助快速重现问题,进而进行修复。

1.2. Python logging 语法

Python的logging模块提供了强大的日志记录功能,语法如下:

  1. 基本配置
    • logging.basicConfig():设置日志输出的基本配置,如日志级别、输出格式、输出位置等。
  2. 日志级别
    • DEBUG:详细的调试信息,通常只在开发时使用。
    • INFO:常规的信息,如程序的运行状态。
    • WARNING:警告信息,表明可能的潜在问题。
    • ERROR:错误信息,表明发生了问题,但不至于崩溃。
    • CRITICAL:严重错误,通常会导致程序崩溃。
  3. 日志记录器
    • 使用logging.getLogger()可以获取日志记录器,并设置不同的处理器(如文件、控制台输出)。
  4. 格式化日志
    • logging.Formatter():用于定义日志的输出格式。

1.3. Python logging 基本使用

示例代码:

import logging

# 配置日志
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# 记录日志
logging.debug("This is a debug message")
logging.info("This is an info message")
logging.warning("This is a warning message")
logging.error("This is an error message")
logging.critical("This is a critical message")

解释

  • basicConfig()配置日志的基本设置,包括日志级别和格式。
  • level=logging.DEBUG设置日志级别为DEBUG,记录所有级别的日志。
  • format设置日志输出的格式,常见格式项包括:时间戳(%(asctime)s)、日志级别(%(levelname)s)、日志内容(%(message)s)等。

1.4. Python logging 项目中使用思路和技巧

在实际项目开发中,日志管理是一项重要的工作。良好的日志管理可以帮助我们快速定位问题、优化性能、跟踪系统行为。以下是一些Python 项目中使用 logging 的最佳实践,包括结构化管理、不同级别日志、文件与控制台日志、日志回滚、日志格式、日志过滤器、日志监控等。


1. 结构化管理日志

在项目中,我们可以使用单独的日志管理模块来统一配置日志,而不是直接在各个文件中调用 basicConfig()。这样可以实现:

  • 统一管理日志配置
  • 不同模块使用不同的日志记录器
  • 便于后续修改日志配置
示例:创建日志管理模块
# log_config.py
import logging
import os

# 1. 创建日志目录
log_dir = "logs"
if not os.path.exists(log_dir):
    os.makedirs(log_dir)

# 2. 配置日志格式
log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"

# 3. 创建日志处理器
file_handler = logging.FileHandler(os.path.join(log_dir, "app.log"), encoding='utf-8')
file_handler.setLevel(logging.DEBUG)  # 文件日志记录 DEBUG 及以上日志
file_handler.setFormatter(logging.Formatter(log_format))

console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)  # 终端只打印 INFO 及以上日志
console_handler.setFormatter(logging.Formatter(log_format))

# 4. 配置日志记录器
logger = logging.getLogger("MyApp")
logger.setLevel(logging.DEBUG)
logger.addHandler(file_handler)
logger.addHandler(console_handler)

使用方法

# main.py
from log_config import logger

logger.debug("This is a debug log")
logger.info
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI Agent首席体验官

您的打赏是我继续创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值