当前位置: 代码网 > it编程>前端脚本>Python > Python使用logging模块创建和处理.log文件的多种方法

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

2026年04月13日 Python 我要评论
在python中创建和处理.log文件,推荐使用内置的logging模块。以下是完整的实现方案:基础版:创建单个日志文件import logging# 基本配置logging.basicconfig(

在 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文件的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com