Skip to main content

Beautiful Python Logger with multi-line dynamic display support

Project description

LogMagix-Yuge

强大的 Python 日志库 - 支持彩色日志、动态加载动画和多行实时显示

Python License

✨ 特性

  • 🎨 彩色日志 - 多种日志级别,美观易读
  • 🔄 动态加载 - 单行 Loader 实时更新
  • 📊 多行显示 - 同时监控多个任务(新功能!)
  • 💾 文件日志 - 自动保存到文件
  • 🖥️ 跨平台 - Windows / Linux / macOS

📦 安装

pip install logmagix-yuge

或者从源码安装:

pip install colorama pystyle packaging requests

🚀 快速开始

Logger - 彩色日志

from logmagix import Logger

log = Logger(prefix="MyApp")

log.info("应用启动")
log.success("操作成功")
log.warning("警告信息")
log.error("错误信息")

Loader - 单行动态

from logmagix import Loader
import time

# 方式1: 手动控制
loader = Loader(prefix="任务", desc="处理中...").start()
time.sleep(3)
loader.stop()

# 方式2: Context Manager
with Loader(prefix="任务", desc="处理中...", end="完成!"):
    time.sleep(3)

Loader - 多行模式 ⭐ 新功能

from logmagix import Loader
import time

# 创建多个任务(设置 multiline=True)
loader1 = Loader(prefix="任务1", desc="运行中...", multiline=True).start()
loader2 = Loader(prefix="任务2", desc="运行中...", multiline=True).start()
loader3 = Loader(prefix="任务3", desc="运行中...", multiline=True).start()

# 动态更新
loader1.desc = "步骤1: 准备数据..."
loader2.desc = "步骤2: 处理数据..."
loader3.desc = "步骤3: 保存结果..."

time.sleep(3)

# 停止
loader1.stop()
loader2.stop()
loader3.stop()

time.sleep(1)  # 等待自动清理
print("完成!")

效果:

[任务1] [17:00:01] [步骤1: 准备数据...] ⠋
[任务2] [17:00:01] [步骤2: 处理数据...] ⠙
[任务3] [17:00:01] [步骤3: 保存结果...] ⠹

↓ 停止后 ↓

[任务1] [17:00:04] [完成!] ✓
[任务2] [17:00:04] [完成!] ✓
[任务3] [17:00:04] [完成!] ✓

📖 使用示例

动态进度更新

from logmagix import Loader
import time

loader = Loader(prefix="下载", desc="0%", multiline=True).start()

for i in range(1, 101):
    loader.desc = f"下载进度: {i}%"
    time.sleep(0.05)

loader.stop()
time.sleep(1)

多线程任务监控

from logmagix import Loader
import time
import threading

def worker(task_id):
    loader = Loader(
        prefix=f"线程{task_id}",
        desc="处理中...",
        end="完成!",
        multiline=True
    ).start()

    # 模拟工作
    for i in range(10):
        loader.desc = f"进度: {i*10}%"
        time.sleep(0.3)

    loader.stop()

# 启动 3 个并发任务
threads = [threading.Thread(target=worker, args=(i,)) for i in range(1, 4)]
for t in threads:
    t.start()
for t in threads:
    t.join()

time.sleep(1)
print("所有任务完成!")

日志级别控制

from logmagix import Logger, LogLevel

# 只显示 WARNING 及以上级别
log = Logger(prefix="MyApp", level=LogLevel.WARNING)

log.debug("不会显示")
log.info("不会显示")
log.warning("会显示")
log.error("会显示")

文件日志

from logmagix import Logger

log = Logger(
    prefix="MyApp",
    log_file="logs/app.log"
)

log.info("这条日志会同时输出到控制台和文件")

📚 完整文档

详细文档请查看:LogMagix使用文档.md

🎯 API 参考

Loader 类

Loader(
    prefix: str = "Task",          # 任务名称
    desc: str = "Loading...",      # 描述文本(可更新)
    end: str = "\r",               # 结束文本
    timeout: float = 0.1,          # 动画间隔(单行模式)
    multiline: bool = False        # 多行模式开关
)

方法:

  • start() - 启动 Loader
  • stop() - 停止 Loader

属性:

  • desc - 描述文本(可读写)

Logger 类

Logger(
    style: int = 1,                # 样式(1=彩色,2=简洁)
    prefix: str = "App",           # 日志前缀
    level: LogLevel = DEBUG,       # 最低日志级别
    log_file: str = None           # 日志文件路径
)

方法:

  • debug(msg) - 调试日志
  • info(msg) - 信息日志
  • warning(msg) - 警告日志
  • success(msg) - 成功日志
  • error(msg) - 错误日志
  • critical(msg) - 严重错误

⚠️ 注意事项

多行模式

  1. 不要在运行期间使用 print()

    # ❌ 错误
    loader.start()
    print("启动")  # 破坏渲染
    
    # ✅ 正确
    loader.start()
    loader.stop()
    time.sleep(1)
    print("完成")
    
  2. 等待自动停止

    loader1.stop()
    loader2.stop()
    time.sleep(1)  # 等待 Manager 自动停止
    

平台兼容性

  • ✅ Windows 10+
  • ✅ Linux
  • ✅ macOS
  • ⚠️ Windows 7/8 可能不支持

🔧 常见问题

Q: 多行模式下任务消失了?

A: 确保没有在运行期间使用 print(),并在停止后等待 1 秒。

Q: 如何改变动画样式?

A: 修改 loader.steps 属性:

loader.steps = ["◐", "◓", "◑", "◒"]

Q: 单行和多行可以混用吗?

A: 不建议。同一时间应只使用一种模式。

📝 更新日志

v2.x - 多行模式支持

  • ✅ 新增多行模式(multiline=True
  • ✅ 支持同时显示多个任务
  • ✅ 自动生命周期管理
  • ✅ 完全向下兼容

v1.x - 基础功能

  • Logger 彩色日志
  • Loader 单行动态
  • 文件日志支持

📄 许可证

MIT License - 详见 LICENSE

🤝 贡献

欢迎提交 Issue 和 Pull Request!

👤 作者

LogMagix-Yuge 由 yuge666 开发和维护


基于 LogMagix 优化而来

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

logmagix_yuge-2.1.3.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

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

logmagix_yuge-2.1.3-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file logmagix_yuge-2.1.3.tar.gz.

File metadata

  • Download URL: logmagix_yuge-2.1.3.tar.gz
  • Upload date:
  • Size: 16.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for logmagix_yuge-2.1.3.tar.gz
Algorithm Hash digest
SHA256 6681e99d143713b37c5fbe36f680040fb99471a47fd9ce8bf6b8af6a2de831d0
MD5 b53b7cfa28694c7eb6135e673f1f4666
BLAKE2b-256 2b1bca200172da0199e8886ac63a8584f10df247f1bc18a2aa8ec5a7c3f7fe6a

See more details on using hashes here.

File details

Details for the file logmagix_yuge-2.1.3-py3-none-any.whl.

File metadata

  • Download URL: logmagix_yuge-2.1.3-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for logmagix_yuge-2.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a3f3df5a8b00c899446720c9eb6482c53d6187011b09c6de46b421fed47c147b
MD5 1c4e54eaff79d1c39d6ae893d240806f
BLAKE2b-256 cee6cc3abc2ef6d9407fa3ff8bc4054357631bf884536a2a53c6cf4ba1539b9f

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