做多國語言網(wǎng)站品牌策略的7種類型
tklog是rust高性能結(jié)構(gòu)化日志庫,支持同步日志,異步日志,支持自定義日志的輸出格式,支持按時(shí)間,按文件大小分割日志文件,支持日志文件壓縮備份,支持官方日志庫標(biāo)準(zhǔn)API,支持mod獨(dú)立參數(shù)設(shè)置
- 官網(wǎng)
- 項(xiàng)目源碼
- 倉庫
- 《tklog與log4rs 的基準(zhǔn)測試》
核心特點(diǎn)
- 高性能同步與異步日志記錄:tklog 支持高效的同步與異步日志記錄,確保即使在高負(fù)載環(huán)境下也能保持良好的性能。
- 靈活的日志格式定制:用戶可以根據(jù)需要自定義日志輸出格式,包括日志級別、時(shí)間戳格式等。
- 智能日志文件管理:支持按時(shí)間或文件大小自動(dòng)分割日志文件,以及文件數(shù)量的滾動(dòng)管理,有助于維持日志目錄的整潔。
- 日志壓縮與備份:支持對日志文件進(jìn)行壓縮歸檔,方便長期存儲和備份。
- 官方標(biāo)準(zhǔn) API 兼容:與 Rust 官方日志庫標(biāo)準(zhǔn) API 兼容,便于集成使用。
- 模塊級配置:允許在不同的模塊中獨(dú)立設(shè)置日志參數(shù),增強(qiáng)了靈活性。
0.0.9 版本更新
- v0.0.9 版本,tklog 引入了自定義日志處理函數(shù)的功能,開發(fā)者可以通過?
set_custom_handler()
?方法來定義自己的日志處理邏輯。
說明:custom_handler
?來自?bronya0?給?go-logger?添加的等價(jià)功能?CustomHandler, 該功能在go編程中非常實(shí)用,在rust中同樣很實(shí)用,它可以由開發(fā)者通過捕獲日志記錄時(shí)的日志級別,日志模塊,文件名等信息,做必要的業(yè)務(wù)處理,如捕獲error日志進(jìn)行郵件通知等。因此在同為日志框架的tklog
添加相同的功能,可以分別在同步日志與異步日志中添加
LOG.set_custom_handler(custom_handler)
?? 同步ASYNC_LOG.set_custom_handler(custom_handler)
?? 異步
- custom_handler 示例
#[test]
fn test_custom() {fn custom_handler(lc: &LogContext) -> bool {println!("level >>>>>>>>>>>>>>>>>{:?}", lc.level);println!("message >>>>>>>>>>>>>>>>>{:?}", lc.log_body);println!("filename >>>>>>>>>>>>>>>>>{:?}", lc.filename);println!("line >>>>>>>>>>>>>>>>>{:?}", lc.line);println!("modname >>>>>>>>>>>>>>>>>{:?}", lc.modname);if lc.level == LEVEL::Debug {println!("{}", "debug now");return false;}true}LOG.set_custom_handler(custom_handler);debug!("000000000000000000");info!("1111111111111111111");thread::sleep(Duration::from_secs(1))
}
執(zhí)行結(jié)果
---- test_custom stdout ----
level >>>>>>>>>>>>>>>>>Debug
message >>>>>>>>>>>>>>>>>"000000000000000000"
filename >>>>>>>>>>>>>>>>>"tests estsynclog.rs"
line >>>>>>>>>>>>>>>>>143
modname >>>>>>>>>>>>>>>>>"testsynclog"
debug now
level >>>>>>>>>>>>>>>>>Info
message >>>>>>>>>>>>>>>>>"1111111111111111111"
filename >>>>>>>>>>>>>>>>>"tests estsynclog.rs"
line >>>>>>>>>>>>>>>>>144
modname >>>>>>>>>>>>>>>>>"testsynclog"
[INFO] 2024-08-05 15:39:07 testsynclog.rs 144:1111111111111111111
說明:
- 當(dāng)?
fn custom_handler(lc: &LogContext) -> bool
?返回true時(shí),tklog調(diào)用custom_handler
執(zhí)行自定義函數(shù)后,繼續(xù)執(zhí)行tklog的打印流程。當(dāng)返回false時(shí),tklog不再執(zhí)行tklog的打印程序。直接返回。如示例中所示,當(dāng)年日志級別為Debug時(shí),返回false,所以,tklog的Debug日志,不再打印出來。
tklog快速使用
- 添加依賴
[dependencies]
tklog = "0.0.9" # "0.0.x" 當(dāng)前版本
- 基本日志記錄
use tklog::{trace,debug, error, fatal, info,warn}
fn testlog() {trace!("trace>>>>", "aaaaaaaaa", 1, 2, 3, 4);debug!("debug>>>>", "bbbbbbbbb", 1, 2, 3, 5);info!("info>>>>", "ccccccccc", 1, 2, 3, 5);warn!("warn>>>>", "dddddddddd", 1, 2, 3, 6);error!("error>>>>", "eeeeeeee", 1, 2, 3, 7);fatal!("fatal>>>>", "ffffffff", 1, 2, 3, 8);
}
- 打印結(jié)果:
[TRACE] 2024-05-26 11:47:22 testlog.rs 27:trace>>>>,aaaaaaaaa,1,2,3,4
[DEBUG] 2024-05-26 11:47:22 testlog.rs 28:debug>>>>,bbbbbbbbb,1,2,3,5
[INFO] 2024-05-26 11:47:22 testlog.rs 29:info>>>>,ccccccccc,1,2,3,5
[WARN] 2024-05-26 11:47:22 testlog.rs 30:warn>>>>,dddddddddd,1,2,3,6
[ERROR] 2024-05-26 11:47:22 testlog.rs 31:error>>>>,eeeeeeee,1,2,3,7
[FATAL] 2024-05-26 11:47:22 testlog.rs 32:fatal>>>>,ffffffff,1,2,3,8