#logger #message #context #level #info #projects #targets

quil

为Rust项目提供的简单日志记录库

7个不稳定版本 (3个破坏性更新)

使用旧的Rust 2015

0.4.1 2017年11月23日
0.4.0 2017年11月15日
0.3.2 2017年11月8日
0.2.0 2017年11月8日
0.1.0 2017年9月29日

#37 in #targets

MIT许可证

26KB
413 代码行

Quil是一个易于使用的库,支持消息级别、多个输出目标、子日志记录器和消息上下文。Quil可以在多个线程中安全使用,并且易于扩展。

示例

基本示例

let logger = Logger::new(Console::new(), context!{ src: "root" });

logger.info("hello world");
Tue,  7 Nov 2017 23:55:42 +0000 - info:    hello world src=root

子上下文示例

let logger = Logger::new(Console::new(), context!{ src: "root", tag: "1" });
logger.info("hello");

let sub_logger = logger.ctx(context!{ tag: "", marker: "49" });
logger.info("world");
Tue,  7 Nov 2017 23:55:42 +0000 - info:    hello src=root tag=1
Tue,  7 Nov 2017 23:55:42 +0000 - info:    world src=root marker=49

多目标示例

let logger = Logger::new(targets![
  Console::new(),
  JsonFile::open("path/to/logfile.json"),
], context!{ some_meta_key: "some_meta_value" });

logger.info("hello");

let sub_logger = logger.ctx(context!{ marker: "49" });
logger.warn("world");

Shell:

Tue,  7 Nov 2017 23:55:42 +0000 - info:    hello some_meta_key=some_meta_value
Tue,  7 Nov 2017 23:55:42 +0000 - warn:    world some_meta_key=some_meta_value marker=49

日志文件:

{ "level": "info", "message": "hello", "context": { "some_meta_key": "some_meta_value" } }
{ "level": "warn", "message": "world", "context": { "some_meta_key": "some_meta_value", "marker": "49" } }

Quil是一个易于使用的库,支持消息级别、多个目标和消息上下文。Quil是线程安全的,因此可以在多个线程之间发送日志记录器。

文档

示例

基本示例

let logger = Logger::new(Console::new(), context!{ src: "root" });

logger.info("hello world");
Tue,  7 Nov 2017 23:55:42 +0000 - info:    hello world src=root

子上下文示例

let logger = Logger::new(Console::new(), context!{ src: "root", tag: "1" });
logger.info("hello");

let sub_logger = logger.ctx(context!{ tag: "", marker: "49" });
logger.info("world");
Tue,  7 Nov 2017 23:55:42 +0000 - info:    hello src=root tag=1
Tue,  7 Nov 2017 23:55:42 +0000 - info:    world src=root marker=49

依赖项

~1–8.5MB
~50K SLoC