# colored-term **Repository Path**: yizili/colored-term ## Basic Information - **Project Name**: colored-term - **Description**: No description available - **Primary Language**: Unknown - **License**: CC0-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-04 - **Last Updated**: 2026-04-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # term_print 一个为 Rust 终端程序设计的彩色日志打印宏,支持自定义前景色、时间戳(UTC)以及文件位置(模块路径、行号、列号)的自动输出。 ## 功能特性 - **彩色输出**:提供 8 种标准色(黑、红、绿、黄、蓝、品红、青、白)、橙色以及任意 RGB 颜色。 - **分级日志**:内置 `Info`、`Warn`、`Debug`、`Error` 四个级别,每个级别有对应的默认颜色和文本。 - **自动时间戳**:输出 UTC 时间,格式为 `YYYY-MM-DD HH:MM:SS.microseconds`。 - **定位信息**:自动记录宏调用处的模块路径、行号和列号,便于调试。 - **可扩展**:可通过实现 `TermLevel` trait 添加自定义日志级别和颜色。 ## 快速开始 在 `Cargo.toml` 中添加本库作为依赖,然后: ```rust use term_print::{term_print, Info, Warn, Debug, Error}; fn main() { term_print!(Info; "Hello, world!"); term_print!(Warn; "Hello, world!"); term_print!(Debug; "Hello, world!"); term_print!(Error; "Hello, world!"); } ``` 示例输出(颜色效果在终端中可见): ```terminal 2025-01-15 10:30:45.123456 INFO my_module::submodule:42:42 Hello, world! ``` ## 宏用法 ```rust term_print!($level; $($content),*) ``` - `$level`:实现了 `TermLevel` 的类型实例,如 `Info`、`Warn`、`Debug`、`Error`。 - `$($content),*`:与 `println!` 类似的格式化参数,支持 `format!` 语法。 ## 自定义日志级别 通过实现 `TermLevel` trait 可以增加自己的日志类型: ```rust use term_print::{TermLevel, ForeColor}; use std::fmt::Display; struct Critical; impl TermLevel for Critical { fn color_front(&self) -> impl Display { ForeColor::Rgb(255, 0, 255) // 品红色 } fn level_text(&self) -> &str { "CRITICAL" } } // 使用 term_print!(Critical; "Severe error!"); ``` 也可以重写 `color_back` 方法设置背景色(默认 `Reset`)。 同时,支持了一些默认写法: ```rust info!("Hello, world! This is an info."); warn!("{x} + 3 != 40", x = 40); debug!("Hello, {}!", "Rust"); error!("0=={}!", 0); ``` ## 颜色选项 `ForeColor` 枚举支持: - `Black`, `Red`, `Green`, `Yellow`, `Blue`, `Magenta`, `Cyan`, `White` - `Orange` - `Rgb(u8, u8, u8)` 自定义 RGB 颜色 - `Reset` 重置颜色(用于背景色默认值) ## 时间戳说明 宏内部调用 `unix_timestamp_to_utc` 将 Unix 时间戳转换为 UTC 日期时间,包含微秒精度。该函数正确处理了闰年、世纪闰年等规则。 ## 注意事项 - 仅当终端支持 ANSI 转义序列时颜色才会正确显示(大多数 Unix/Linux/macOS 终端及 Windows 10+ 均支持)。 - 时间戳使用系统时钟,假设其已正确同步。 - 宏会展开为 `println!`,因此输出会自动添加换行。 ## 测试 运行 `cargo test` 可看到四行彩色日志输出,仅用于验证宏工作正常。 --- **许可证**:CC0-1.0