功能强大的 Python 彩色日志工具,支持结构化日志记录,类似 Go Zap 的字段式日志,支持纯文本和 JSON 格式输出
Project description
ColorInfo 🌈
一个功能强大的 Python 彩色日志工具,支持结构化日志记录,参考 loguru 设计实现全局配置同步
📊 项目状态
🎯 核心特性
✨ 主要特性
- 🎨 彩色输出 - 终端彩色日志显示
- 📝 结构化日志 - 类似 Go Zap 的字段式日志记录
- 🌐 多格式支持 - 纯文本和 JSON 格式输出
- � 全局配置 - 参考 loguru 设计,一处配置全局同步
- 📊 多输出等级 - 支持不同输出目标设置不同日志级别
- ⏰ 时间格式 - 支持自定义时间格式和多种预设格式
- �🔧 使用简单 - 简洁的 API 设计
- 🎯 中文注释 - 完整的中文文档和注释
- 🐍 版本兼容 - 支持全部 Python3 版本 (>=3.0)
- 📊 参数灵活 - 支持传入多个参数,无需格式化
- 🔍 智能定位 - 自动显示调用文件和行号信息
📦 安装教程
快速安装
pip3 install --upgrade ColorInfo-liumou-Stable
开发安装
git clone https://gitee.com/liumou_site/ColorInfo.git
cd ColorInfo
pip3 install -e .
验证安装
# 测试安装是否成功
from ColorInfo_liumou_Stable import logger
logger.info("✅ ColorInfo 安装成功!")
🚀 快速开始
新版全局 Logger(推荐)
参考 loguru 设计,只需在一个地方配置,所有模块自动同步:
from ColorInfo_liumou_Stable import logger
import sys
# 添加文件处理器(文件输出INFO级别,控制台输出DEBUG级别)
logger.add("app.log", level="INFO")
logger.add(sys.stdout, level="DEBUG")
# DEBUG级别只在控制台显示
logger.debug("调试信息")
# INFO级别在控制台和文件都显示
logger.info("应用启动")
# 结构化日志
logger.bind(user_id=123).info("用户登录", ip="192.168.1.1")
多输出等级配置
from ColorInfo_liumou_Stable import logger
import sys
# 清除默认处理器
logger.remove()
# 控制台输出 DEBUG 及以上级别
logger.add(sys.stdout, level="DEBUG", colorize=True)
# 文件只输出 INFO 及以上级别
logger.add("app.log", level="INFO")
# 错误日志单独输出到 error.log
logger.add("error.log", level="ERROR")
logger.debug("这条只在控制台显示")
logger.info("这条在控制台和文件都显示")
logger.error("这条在所有地方都显示")
时间格式设置
from ColorInfo_liumou_Stable import logger
# 使用预设格式
logger.set_time_format(preset='iso') # ISO格式: 2026-02-03T20:18:51
logger.set_time_format(preset='compact') # 紧凑格式: 20260203_201851
logger.set_time_format(preset='verbose') # 中文格式: 2026年02月03日 20时18分51秒
# 使用自定义格式
logger.set_time_format(fmt='%Y/%m/%d %H:%M:%S.%f') # 带毫秒
# 使用12小时制
logger.set_time_format(preset='us', use_24h=False) # 02/03/2026 08:18:51 PM
结构化日志
from ColorInfo_liumou_Stable import logger
# 方式1: 使用 bind 创建带默认字段的 logger
user_logger = logger.bind(user_id=12345, username='admin')
user_logger.info("用户登录", ip='192.168.1.1')
user_logger.error("登录失败", reason="密码错误")
# 方式2: 链式调用
logger.bind(request_id="abc-123").info("处理请求", method="GET", path="/api/users")
# 方式3: as_structured 模式
logger.as_structured(app="MyApp", version="1.0.0")
logger.info("服务启动", port=8080)
# 切换回普通模式
logger.as_plain()
高级配置
from ColorInfo_liumou_Stable import logger
import sys
# 批量配置
logger.configure(
handlers=[
{"sink": sys.stdout, "level": "DEBUG", "colorize": True},
{"sink": "app.log", "level": "INFO"},
{"sink": "error.log", "level": "ERROR", "serialize": True}, # JSON格式
],
extra={"service": "my-service", "version": "2.0.0"}
)
# 设置格式选项
logger.set_format(
date_on=True, # 显示日期
time_on=True, # 显示时间
filename_on=True, # 显示文件名
class_on=True, # 显示类名
fun_on=True, # 显示函数名
line=True, # 显示行号
level=True # 显示日志级别
)
📋 完整示例
全局 Logger 示例
from ColorInfo_liumou_Stable import logger
import sys
def main():
# 配置日志
logger.add("app.log", level="INFO")
logger.set_time_format(preset='iso')
# 记录日志
logger.debug("调试信息")
logger.info("应用启动")
logger.warning("警告信息")
logger.error("错误信息")
# 结构化日志
logger.bind(user_id=123).info("用户操作", action="login")
if __name__ == "__main__":
main()
多模块配置同步示例
# config.py - 配置模块
from ColorInfo_liumou_Stable import logger
import sys
# 在一个地方配置
logger.add("app.log", level="INFO")
logger.add(sys.stdout, level="DEBUG")
# main.py - 主模块
from ColorInfo_liumou_Stable import logger
from config import logger as config_logger # 自动使用 config.py 的配置
logger.info("主模块日志") # 使用 config.py 的配置
# module_a.py - 其他模块
from ColorInfo_liumou_Stable import logger
logger.debug("模块A调试") # 同样使用 config.py 的配置
传统 ColorLogger(向后兼容)
from ColorInfo_liumou_Stable import ColorLogger
# 创建日志记录器
log = ColorLogger(txt=True, fileinfo=True, basename=False)
# 记录不同级别的日志
log.info('信息消息')
log.error('错误消息')
log.debug('调试消息')
log.warning('警告消息')
🎨 输出效果
控制台输出
日志会在控制台显示彩色输出,包含时间、文件名、行号、类名、函数名和日志内容。
2026-02-03T20:18:51 demo.py line: 25 Function: main INFO : 应用启动
2026-02-03T20:18:51 demo.py line: 26 Function: main ERROR : 错误信息
文件输出
同时支持将日志写入文件,包含完整的结构化信息:
2026-02-03 20:18:51 demo.py line: 17 Function: demos INFO : 1 x=23
2026-02-03 20:18:51 demo.py line: 18 Function: demos ERROR : 2 22 222
2026-02-03 20:18:51 structured.py line: 93 Class: StructuredLogger Function: info INFO : 用户登录 user_id=12345 username=admin ip=192.168.1.1
JSON 格式输出
{"timestamp": "2026-02-03T20:18:51.570094", "level": "INFO", "message": "JSON格式日志 app=DemoApp version=2.0.0 user_id=123 action=login service=demo-service", "file": "demo.py", "line": 167, "function": "demo_json_output", "fields": {"app": "DemoApp", "version": "2.0.0", "user_id": 123, "action": "login", "service": "demo-service"}}
🛠️ API 参考
全局 Logger(推荐)
logger.add(sink, level="DEBUG", **kwargs)- 添加日志处理器logger.remove(handler_id=None)- 移除处理器logger.configure(**kwargs)- 批量配置logger.set_format(**kwargs)- 设置格式选项logger.set_time_format(**kwargs)- 设置时间格式logger.bind(**fields)- 创建带默认字段的 loggerlogger.as_structured(**fields)- 切换为结构化模式logger.as_plain()- 切换为普通模式logger.debug/info/warning/error(msg, **fields)- 记录日志
时间格式预设
| 预设名称 | 格式 | 示例 |
|---|---|---|
default |
%Y-%m-%d %H:%M:%S |
2026-02-03 20:18:51 |
iso |
%Y-%m-%dT%H:%M:%S |
2026-02-03T20:18:51 |
compact |
%Y%m%d_%H%M%S |
20260203_201851 |
time_only |
%H:%M:%S |
20:18:51 |
date_only |
%Y-%m-%d |
2026-02-03 |
us |
%m/%d/%Y %I:%M:%S %p |
02/03/2026 08:18:51 PM |
eu |
%d/%m/%Y %H:%M:%S |
03/02/2026 20:18:51 |
verbose |
%Y年%m月%d日 %H时%M分%S秒 |
2026年02月03日 20时18分51秒 |
ColorLogger 类(向后兼容)
info(msg, *args)- 记录信息级别日志error(msg, *args)- 记录错误级别日志debug(msg, *args)- 记录调试级别日志warning(msg, *args)- 记录警告级别日志set_level(console, text)- 设置日志级别set_format(**kwargs)- 设置格式选项
结构化日志类(向后兼容)
StructuredLogger(base_logger)- 字段式结构化日志JSONStructuredLogger(base_logger)- JSON 格式结构化日志sugar(logger)- 将普通日志转换为结构化日志
🔗 项目链接
- PyPI 主页: https://pypi.org/project/ColorInfo-liumou-Stable/
- Gitee 仓库: https://gitee.com/liumou_site/ColorInfo.git
📸 效果截图
请在 Gitee 项目主页查看详细的彩色日志效果图片
📄 许可证
本项目采用开源许可证,详见项目仓库
ColorInfo - 让 Python 日志记录变得简单而强大!🚀
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
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 colorinfo_liumou_stable-2.1.0.tar.gz.
File metadata
- Download URL: colorinfo_liumou_stable-2.1.0.tar.gz
- Upload date:
- Size: 26.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b1e30cfa75f02518b001bc9ec860e36a8e2c92ca101fab8c1d2341a83f6ca9e3
|
|
| MD5 |
760ea7b520088b5ddee737858767e77e
|
|
| BLAKE2b-256 |
f3a7f6191fe44776921b63292f822be6f2aa5b0960a42f5425b103450921e713
|
File details
Details for the file colorinfo_liumou_stable-2.1.0-py3-none-any.whl.
File metadata
- Download URL: colorinfo_liumou_stable-2.1.0-py3-none-any.whl
- Upload date:
- Size: 25.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc6f8d584c84ba57dc00c02bedf2e2038269a5d51877019d61ae9fb466203f74
|
|
| MD5 |
70abddd8f3864b28d5c0c0ddcf431fc6
|
|
| BLAKE2b-256 |
4dec69fa7afd58b882b3948e6e548372fd068e2b6c7fc08459be76c756abb09b
|