#logging #pretty #color #terminal

bin+lib prettylog-rs

为 Rust 提供美观且可定制的日志库

3 个版本

新版本 0.1.2 2024年8月24日
0.1.1 2024年8月23日
0.1.0 2024年8月23日

230调试 中排名

Download history

每月 82 次下载

MIT/Apache

23KB
490

prettylog-rs

Crates.io

一个专注于控制台可读性的 Rust 日志库。prettylog-rs 利用 ANSI 颜色代码使您的日志看起来✨ 美观 ✨。

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
prettylog-rs = "0.1.1"

日志记录

日志记录非常简单,只需调用 log(message, type) 函数。其中 type 参数是可选的,默认为 LogType::Runtime

use prettylog_rs::{log, LogType};

fn main() {
    prettylog_rs::logger::init();

    log("Hello there!", LogType::Information);
    log("general kenobi", LogType::Network);
}

您还可以记录异常!

use std::error::Error;

fn main() -> Result<(), Box<dyn Error>> {
    prettylog_rs::logger::init();

    // Some code that might throw an error
    let result = std::fs::read_to_string("non_existent_file.txt");

    if let Err(e) = result {
        log_exception(&e);
    }

    Ok(())
}

日志记录器设置

您可以通过修改 LoggerSettings 来更改设置

use prettylog_rs::logger::{LoggerSettings, LoggerStyle};

fn main() {
    let mut settings = LoggerSettings::get();
    settings.save_to_file = true;
    settings.save_directory_path = String::from("./logs/");
    settings.log_file_name_format = String::from("%Y-%m-%d-%H%M%S");
    settings.logger_style = LoggerStyle::Prefix;
}

日志类型

有 16 种默认的日志类型: DebugInformationRuntimeNetworkSuccessWarningErrorExceptionCriticalAuditTraceSecurityUser ActionPerformanceConfigFatal

自定义日志类型

您可以通过实现自己的枚举和相关函数来创建自定义日志类型

use prettylog_rs::types::{AnsiColor, AnsiPair, CustomLogType, LogType};

pub enum MyCustomLogType {
    Cute,
    Git,
    FireWarning,
}

impl CustomLogType for MyCustomLogType {
    fn name(&self) -> &'static str {
        match self {
            MyCustomLogType::Cute => "≽^•⩊•^≼",
            MyCustomLogType::Git => "🤖 Git",
            MyCustomLogType::FireWarning => "🔥 Fire Warning",
        }
    }

    fn color_pair(&self) -> AnsiPair {
        match self {
            MyCustomLogType::Cute => AnsiPair::new(AnsiColor::CutePinkBackground, AnsiColor::CutePink),
            MyCustomLogType::Git => AnsiPair::new(AnsiColor::AquaBackground, AnsiColor::Aqua),
            MyCustomLogType::FireWarning => AnsiPair::new(AnsiColor::OrangeBackground, AnsiColor::Orange),
        }
    }
}

fn main() {
    prettylog_rs::logger::init();

    log("T-This is vewy cuwute message OwO", LogType::Custom(&MyCustomLogType::Cute));
    log("Refusing to merge unrelated histories", LogType::Custom(&MyCustomLogType::Git));
    log("SERVER ROOM ON FIRE, DON'T LET ASO RUN WHILE LOOPS EVER AGAIN", LogType::Custom(&MyCustomLogType::FireWarning));
}

许可证

本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。

贡献

欢迎贡献!请随时提交 Pull Request。

鸣谢

https://github.com/LukynkaCZE https://github.com/LukynkaCZE/PrettyLog

依赖关系

~1.3–2MB
~36K SLoC