Skip to main content

基于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


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.3.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xtlog-0.1.3-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

File details

Details for the file xtlog-0.1.3.tar.gz.

File metadata

  • Download URL: xtlog-0.1.3.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for xtlog-0.1.3.tar.gz
Algorithm Hash digest
SHA256 fda68abdfbf0e0a119a1b46d5dc824508d5702405fc522e18b30561c5202bf13
MD5 1949e68dc1a7ecc1e65b43353cfb844c
BLAKE2b-256 ab03fc2268b144df16901adf3b038687d5f65afb7882547ddf5cd8418ed7f870

See more details on using hashes here.

File details

Details for the file xtlog-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: xtlog-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 4.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for xtlog-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4df11cf7bc9577a6b7dd4b8427f954c9d7e384cd04e0a01dfebecd0ec6f09e88
MD5 3b9f5957c941b525b6f37bdf74973539
BLAKE2b-256 6355bfc3fb51a2bf037a5e200aab9347f4d973002b7a53f92c7595d3bcff5654

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page