Python中如何实现日志记录-使用logging模块详解

2025-05-10 7

在 Python 中,可以通过内置的 logging 模块实现灵活的日志记录。以下是详细的实现方法和示例:


1. 基础用法

import logging

# 配置基础日志(默认输出到控制台)
logging.basicConfig(level=logging.INFO)  # 设置日志级别为INFO

# 记录日志
logging.debug("调试信息")    # 不会输出(级别低于INFO)
logging.info("普通信息")     # 输出:INFO:root:普通信息
logging.warning("警告信息")  # 输出:WARNING:root:警告信息
logging.error("错误信息")   # 输出:ERROR:root:错误信息

2. 日志级别

级别从低到高:DEBUG < INFO < WARNING < ERROR < CRITICAL
通过 level 参数控制输出的级别。


3. 输出到文件

import logging

logging.basicConfig(
    filename='app.log',      # 日志文件路径
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)

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

4. 高级配置(推荐)

使用 Logger 对象更灵活地管理日志:

import logging

# 创建Logger实例
logger = logging.getLogger("my_app")
logger.setLevel(logging.DEBUG)  # 设置日志级别

# 创建文件处理器
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.INFO)

# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)

# 设置日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)

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

# 使用日志
logger.debug("调试信息")  # 输出到控制台(文件不记录)
logger.info("运行信息")   # 输出到控制台和文件

5. 常见配置参数

  • format 自定义格式:

    format='%(asctime)s | %(levelname)8s | %(filename)s:%(lineno)d | %(message)s'
    

    输出示例:
    2023-01-01 12:00:00 | INFO | main.py:10 | 这是一条日志

  • datefmt 自定义时间格式:

    format='%(asctime)s %(message)s', datefmt='%Y/%m/%d %H:%M:%S'
    

6. 日志文件轮转

使用 RotatingFileHandler 防止日志文件过大:

from logging.handlers import RotatingFileHandler

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

7. 捕获异常信息

通过 exc_info=True 记录异常堆栈:

try:
    1 / 0
except Exception as e:
    logging.error("发生异常:", exc_info=True)  # 会记录完整的Traceback

  • 简单场景:直接使用 logging.basicConfig()
  • 复杂项目:通过 Logger 对象 + 多处理器(文件/控制台)
  • 关键点:合理设置日志级别、格式化和异常捕获

通过以上方法,可以高效地实现生产级的日志记录。

(www.nzw6.com)

Image

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关