Python使用logging模块创建和处理.log文件的多种方法

 更新时间:2026年04月13日 09:27:07   作者:独隅  
本文介绍了在Python中创建和处理.log文件的方法,推荐使用内置的logging模块,并详细描述了基础版、进阶版和专业版的实现方案,其中包括文件创建、日志级别、大小切割、日期切割、格式定制、多输出目标、高级功能等关键功能的说明和实现方式,需要的朋友可以参考下

在 Python 中创建和处理 .log 文件,推荐使用内置的 logging 模块。以下是完整的实现方案:

基础版:创建单个日志文件

import logging

# 基本配置
logging.basicConfig(
    filename='application.log',  # 日志文件名
    level=logging.DEBUG,         # 记录级别(DEBUG及以上都会记录)
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)

# 使用日志
logging.debug('这是一条调试信息')
logging.info('程序正常启动')
logging.warning('磁盘空间不足50%')
logging.error('数据库连接失败')

进阶版:日志分时分割 (按日期)

from logging.handlers import TimedRotatingFileHandler
import logging

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

# 创建按天分割的日志处理器
handler = TimedRotatingFileHandler(
    'daily_log.log',
    when='midnight',  # 每天午夜分割
    interval=1,
    backupCount=7     # 保留最近7天的日志
)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)

logger.addHandler(handler)

# 使用日志
logger.info("这条日志会按天自动分割")

专业版:多类型日志处理器组合

import logging
from logging.handlers import RotatingFileHandler

# 创建不同处理器
debug_handler = RotatingFileHandler(
    'debug.log',
    maxBytes=1024*1024,  # 1MB
    backupCount=3
)
debug_handler.setLevel(logging.DEBUG)

error_handler = RotatingFileHandler(
    'errors.log',
    maxBytes=1024*1024,
    backupCount=1
)
error_handler.setLevel(logging.ERROR)

# 创建带颜色的控制台输出
console = logging.StreamHandler()
console.setLevel(logging.INFO)

# 创建格式器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
debug_handler.setFormatter(formatter)
error_handler.setFormatter(formatter)
console.setFormatter(logging.Formatter('%(levelname)s: %(message)s'))

# 配置根日志器
root_logger = logging.getLogger()
root_logger.setLevel(logging.DEBUG)
root_logger.addHandler(debug_handler)
root_logger.addHandler(error_handler)
root_logger.addHandler(console)

# 测试日志
logging.debug("开发调试信息")
logging.info("用户登录成功")
logging.warning("接口响应时间过长")
logging.error("支付服务连接超时")

关键功能说明

功能实现方式
文件创建logging.basicConfig(filename='...')
日志级别DEBUG < INFO < WARNING < ERROR < CRITICAL
大小切割RotatingFileHandler
日期切割TimedRotatingFileHandler
格式定制logging.Formatter() 支持日期、进程信息等
多输出目标添加多个处理器到日志器

高级功能

结构化日志 (适合JSON格式)

import json
from logging import Formatter

class JsonFormatter(Formatter):
    def format(self, record):
        log_record = {
            'time': self.formatTime(record),
            'level': record.levelname,
            'message': record.getMessage(),
            'module': record.module
        }
        return json.dumps(log_record)

formatter = JsonFormatter()

日志过滤

class NoDebugFilter(logging.Filter):
    def filter(self, record):
        return record.levelno < logging.DEBUG

debug_handler.addFilter(NoDebugFilter())

日志管理最佳实践

目录结构

project/
├── logs/
│   ├── debug.log
│   ├── info.log
│   └── errors.log
└── main.py

推荐配置

import os
from pathlib import Path

# 创建日志目录
log_dir = Path('logs')
log_dir.mkdir(exist_ok=True)

# 主日志配置
logging.basicConfig(
    level=logging.INFO,
    handlers=[
        RotatingFileHandler(log_dir/'app.log', maxBytes=10*1024*1024, backupCount=5),
        logging.StreamHandler()
    ],
    format='[%(asctime)s] %(levelname)s in %(module)s: %(message)s'
)

环境区分

if os.getenv('FLASK_ENV') == 'development':
    logging.getLogger().setLevel(logging.DEBUG)
else:
    logging.getLogger().setLevel(logging.WARNING)

使用这些方法,您可以创建专业级的日志系统,满足从简单记录到企业级应用的各种需求。

以上就是Python使用logging模块创建和处理.log文件的多种方法的详细内容,更多关于Python logging创建和处理.log文件的资料请关注脚本之家其它相关文章!

相关文章

  • Python安装.whl文件流程以及问题解决方法

    Python安装.whl文件流程以及问题解决方法

    WHL文件是以Wheel格式保存的Python安装包,Wheel是Python发行版的标准内置包格式,下面这篇文章主要给大家介绍了关于Python安装.whl文件流程以及问题解决方法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Python 70行代码实现简单算式计算器解析

    Python 70行代码实现简单算式计算器解析

    这篇文章主要介绍了Python 70行代码实现简单算式计算器解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python机器学习Sklearn实战adaboost算法示例详解

    python机器学习Sklearn实战adaboost算法示例详解

    这篇文章主要为大家介绍了python机器学习Sklearn实战adaboost算法的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2021-11-11
  • Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的

    Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的

    这篇文章主要介绍了Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Pandas中describe()函数的具体使用

    Pandas中describe()函数的具体使用

    本文主要介绍了Pandas中describe()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Python从文件中读取数据的方法步骤

    Python从文件中读取数据的方法步骤

    这篇文章主要介绍了Python从文件中读取数据的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Python实现一个简单三层神经网络的搭建及测试 代码解析

    Python实现一个简单三层神经网络的搭建及测试 代码解析

    一个完整的神经网络一般由三层构成:输入层,隐藏层(可以有多层)和输出层。本文所构建的神经网络隐藏层只有一层。一个神经网络主要由三部分构成(代码结构上):初始化,训练,和预测。,需要的朋友可以参考下面文章内容的具体内容
    2021-09-09
  • Python利用ElementTree模块处理XML的方法详解

    Python利用ElementTree模块处理XML的方法详解

    ElementTree是python的XML处理模块,它提供了一个轻量级的对象模,下面这篇文章就来给大家介绍了关于Python利用ElementTree模块处理XML的方法,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-08-08
  • pycharm 安装JPype的教程

    pycharm 安装JPype的教程

    这篇文章主要介绍了pycharm 安装JPype的步骤,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • pytorch fine-tune 预训练的模型操作

    pytorch fine-tune 预训练的模型操作

    这篇文章主要介绍了pytorch fine-tune 预训练的模型操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06

最新评论