基于loguru的高性能日志库
Project description
xtlog
基于 loguru 的高性能日志库
特性
- 🚀 高性能: 基于 loguru 的高性能日志记录
- 📝 双输出: 文件和控制台双输出支持
- 🔄 自动轮转: 自动日志文件轮转和保留
- 🎯 单例模式: 确保全局只有一个日志实例
- 📍 智能定位: 自动识别调用位置信息
- ⚙️ 动态配置: 支持动态设置日志级别
- 🎨 丰富图标: 支持丰富的日志图标显示
- 📊 结构化日志: 支持JSON格式的结构化日志输出
- 🔍 异常追踪: 自动捕获和记录异常堆栈
- 🛠️ 灵活配置: 支持自定义日志格式和输出路径
安装
pip install xtlog
快速开始
from xtlog import mylog
# 基本使用
mylog.info("这是一条信息日志")
mylog.error("这是一条错误日志")
# 支持直接调用
mylog("第一条日志", "第二条日志")
# 设置日志级别
mylog.set_level("DEBUG")
高级功能
自定义日志配置
from xtlog import LogCls
# 创建自定义日志实例
custom_log = LogCls(
level=20, # INFO级别
log_file_rotation_size="10 MB",
log_file_retention_days="7 days",
log_dir="/custom/log/path", # 自定义日志目录
log_file_name="custom.log" # 自定义日志文件名
)
custom_log.info("自定义配置的日志")
使用 callfrom 参数
from xtlog import mylog
def my_function():
mylog.info("函数内的日志", callfrom=my_function)
my_function()
结构化日志输出
from xtlog import LogCls
from xtlog.config import JSON_FORMAT
# 创建JSON格式的日志实例
json_log = LogCls(
level="INFO",
log_format=JSON_FORMAT,
serialize=True # 启用序列化
)
# 记录结构化日志
json_log.info("用户登录", extra={
"user_id": 12345,
"ip_address": "192.168.1.1",
"success": True
})
异常捕获
try:
# 可能引发异常的代码
result = 1 / 0
except Exception as e:
# 使用xtlog记录异常
mylog.exception(f"发生异常: {str(e)}")
上下文管理
import time
from contextlib import contextmanager
@contextmanager
def log_time(operation_name):
start_time = time.time()
try:
yield
finally:
elapsed_time = time.time() - start_time
mylog.info(f"{operation_name} 完成,耗时: {elapsed_time:.4f}秒")
# 使用上下文管理器
with log_time("耗时操作"):
time.sleep(1.5)
日志级别
支持以下日志级别:
TRACE(5)DEBUG(10)INFO(20)SUCCESS(25)WARNING(30)ERROR(40)CRITICAL(50)
日志格式
xtlog提供了多种预定义的日志格式:
default: 优化格式,包含时间、级别、路径和消息simple: 简洁格式,只包含基本信息detailed: 详细格式,包含更多信息如进程ID、线程ID等json: JSON格式,用于结构化日志输出
from xtlog import LogCls
from xtlog.config import FORMAT_MAP
# 使用简洁格式
simple_log = LogCls(log_format=FORMAT_MAP["simple"])
配置
环境变量
ENV: 设置环境类型,dev为开发环境(显示控制台日志),其他为生产环境LOG_LEVEL: 日志级别,默认为"DEBUG"LOG_FORMAT: 日志格式,默认为"default"LOG_FILE: 日志文件名,默认为自动生成LOG_DIR: 日志目录,默认为项目根目录下的logs目录LOG_ROTATION_SIZE: 日志文件轮转大小,默认为"16 MB"LOG_RETENTION_DAYS: 日志文件保留天数,默认为"30 days"
默认配置
- 日志文件位置:
项目根目录/logs/xt_YYYYMMDD.log - 文件轮转大小:
16 MB - 文件保留天数:
30 days - 默认日志级别:
DEBUG(10)
示例
查看 examples 目录获取更多示例:
文档
详细文档请参考 docs 目录:
开发
安装开发依赖
pip install -e .[dev]
运行测试
pytest
代码检查
ruff check --fix --unsafe-fixes
类型检查
mypy .
贡献
欢迎提交问题和贡献代码!请参阅 贡献指南。
许可证
MIT License
作者
sandorn sandorn@live.cn
GitHub: http://github.com/sandorn/xtlog
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
xtlog-0.1.2.tar.gz
(25.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
xtlog-0.1.2-py3-none-any.whl
(13.0 kB
view details)
File details
Details for the file xtlog-0.1.2.tar.gz.
File metadata
- Download URL: xtlog-0.1.2.tar.gz
- Upload date:
- Size: 25.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6beda68c46c64751f5c7fd4212e6c65fae0229366ca55eeaad381c0e86fd56ab
|
|
| MD5 |
85d0acd953a7a1ed0d0730e0f4354079
|
|
| BLAKE2b-256 |
297ab97019aa6ac7d0591521c5a4db127d144abf118fe9d2582324d2d1e6e10e
|
File details
Details for the file xtlog-0.1.2-py3-none-any.whl.
File metadata
- Download URL: xtlog-0.1.2-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c17a14cb70a39248324862e309d9ecca1f67231936787c1a1765e10ce348eb62
|
|
| MD5 |
5964053a837c3025abc427f8b42e2311
|
|
| BLAKE2b-256 |
497bbf0d133ba8657800f71d0ca7e92b9dda87705a53ffce7b4a614b9d92f21f
|