loguru 和 logging 的详细对比
loguru 和 logging 的详细对比
下面是 loguru 和 Python 标准库 logging 的全面对比分析:
1. 基础使用对比
logging (标准库)
import logging
import sys# 复杂配置
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',handlers=[logging.StreamHandler(sys.stdout),logging.FileHandler('app.log')]
)logger = logging.getLogger(__name__)# 使用
logger.info("这是一条信息")
try:1 / 0
except Exception as e:logger.error("发生错误", exc_info=True)
loguru
from loguru import logger# 简单配置
logger.add("app.log", format="{time} - {level} - {message}")# 使用
logger.info("这是一条信息")
try:1 / 0
except Exception as e:logger.error("发生错误")
2. 核心特性对比
特性 | logging | loguru |
---|---|---|
安装方式 | Python 标准库 | pip install loguru |
配置复杂度 | 复杂,需要多个组件 | 简单,一行代码 |
默认设置 | 无默认配置 | 开箱即用 |
异常处理 | 需要 exc_info=True | 自动记录完整堆栈 |
颜色支持 | 需要额外配置 | 内置支持 |
文件轮转 | 需要 RotatingFileHandler | 内置支持 |
压缩支持 | 需要额外代码 | 内置支持 |
结构化日志 | 需要额外配置 | 内置支持 |
3. 详细功能对比
3.1 配置复杂度
logging 配置:
import logging
import logging.handlers# 创建 logger
logger = logging.getLogger('my_app')
logger.setLevel(logging.DEBUG)# 创建 formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)# 控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(formatter)# 文件处理器(带轮转)
file_handler = logging.handlers.RotatingFileHandler('app.log', maxBytes=10485760, backupCount=5
)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)# 错误文件处理器
error_handler = logging.FileHandler('errors.l