An advanced, asynchronous logging system for algorithmic projects.
Project description
zy_log: 一个为算法项目定制的、专业的、异步的日志系统
一个功能强大的 Python 日志包,专为计算密集型和算法项目设计。它通过异步 I/O 确保日志记录不会阻塞您的主计算线程,并使用 rich 提供美观的控制台输出和异常堆栈。
核心功能
- 异步非阻塞: 所有日志 I/O (文件/控制台) 都在一个单独的后台线程中处理。
- Rich 集成: 自动的控制台颜色、美观的格式化和清晰的异常堆栈追踪。
- 动态配置: 可通过参数或环境变量 (
LOG_LEVEL) 轻松覆盖配置。 - 致命错误处理: 提供
logger.error_and_raise()方法,在记录致命错误后立即抛出异常,实现“快速失败”(Fail-Fast)。
安装
pip install zy_log
快速使用
您只需要在您算法的主入口文件 (main.py) 中初始化一次,然后在任何子模块中调用 get_logger 即可。
1. 初始化 (在 main.py 中)
这是最关键的一步。
# main.py
import zy_log
import os
import time
from your_project import run_my_core_algo
# --- 日志系统初始化 (仅一次) ---
# 推荐:动态指定日志文件名,并设置环境变量
log_filename = f"run_{time.strftime('%Y%m%d_%H%M%S')}.log"
os.environ['LOG_LEVEL'] = 'INFO' # 生产环境
# os.environ['LOG_LEVEL'] = 'DEBUG' # 调试时
zy_log.setup_logging(log_file_override=log_filename)
# --- 初始化完成 ---
# 默认模式下,无需指定文件名:日志会写入项目根目录的 `log/<YYYY-MM-DD>/<basename>_<HH-MM-SS>.log`,
# 同一天的运行会自动聚合到同一日期文件夹中,便于快速定位每次运行。
# 获取主模块的 logger
logger = zy_log.get_logger(__name__)
logger.info(f"算法启动,日志将记录到: {log_filename}")
# 运行您的核心算法
try:
run_my_core_algo()
logger.info("算法运行成功结束。")
except Exception as e:
logger.critical(f"算法主流程意外崩溃: {e}", exc_info=True)
2. 在任意子模块中使用
在您的任何算法子模块中:
# your_project/core_algo.py
import zy_log
import time
# [关键] 直接获取 logger,它已经被 main.py 配置好了
logger = zy_log.get_logger(__name__)
def run_my_core_algo():
# 1. 记录正常流程 (Normal)
logger.info("开始加载数据模型...")
# 2. 记录警告 (Warning)
logger.warning("检测到 5% 的缺失值,将使用均值填充。")
# 3. 记录致命错误 (Error)
try:
if "关键数据" is None:
# 这会记录一个红色的 Error 日志,然后抛出 RuntimeError
logger.error_and_raise("关键数据为 None,算法无法继续!")
except RuntimeError as e:
logger.error(f"算法因致命错误中断: {e}")
raise # 必须重新抛出,让上层知道
贡献
欢迎提交 PR 或 Issue。
许可证
本项目使用 MIT License 授权。
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
zy_log-0.1.3.tar.gz
(10.2 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
File details
Details for the file zy_log-0.1.3.tar.gz.
File metadata
- Download URL: zy_log-0.1.3.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e130ffc3c3d28cfb3040a6c40227473e19425ba59abfd2adb06e1b68e414a32
|
|
| MD5 |
677d7fb4f4e5b21578a9cc8b8aef86ca
|
|
| BLAKE2b-256 |
f73b22532d4825c16f1ef2674836f2a89f236839092f61fceb36c9c865f9142d
|
File details
Details for the file zy_log-0.1.3-py3-none-any.whl.
File metadata
- Download URL: zy_log-0.1.3-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53b621cffedf82130065eba33a9d17e9a371d8f2813b6913dad83fda2824200f
|
|
| MD5 |
9342e47b3570a711731eafa43786076d
|
|
| BLAKE2b-256 |
8c7293548eaf3ef6dad28719a5d3c24c16698786dd486743dd413fa441d99f00
|