#record #log #logging #serialization #logger

可序列化_日志_记录

将log::Record转换为可序列化格式。不像听起来那么简单,因为log::Record包含一个不可序列化的类型。这个crate提供了一种处理这种情况的方法。

3个版本

0.3.2 2024年2月19日
0.3.1 2024年2月19日
0.3.0 2024年2月19日

#281 in 调试

每月29次下载
用于 2 crates

MIT/Apache

10KB
69 代码行

serializable_log_record

Crates.io Docs MIT/APACHE-2.0

默认情况下,log::Record结构体不可序列化。这个crate提供了一个可序列化的log::Record结构体版本。但更重要的是,它提供了一个宏into_log_record,可以将序列化的记录转换回普通记录。这不像听起来那么简单,因为log::Record结构体在其字段中使用fmt::Arguments,由于其极其严格的生存期,因此不可序列化。

这个crate是parallel_logger crate的核心辅助crate,但也可以独立使用。

用法

将依赖项添加到您的Cargo.toml

[dependencies]
serializable_log_record = "0.3"

如何在您的应用程序中使用它

let record: log::Record = ...get the record from a logger or build it manually...;
let serializable_record = SerializableLogRecord::from(&record);

如果您启用serde特性,SerializableLogRecord结构体实现了Serialize和Deserialize特性。
如果您启用bincode2特性,SerializableLogRecord结构体实现了bincode 2的Encode和Decode特性。

要将SerializableLogRecord转换回log::Record,可以使用into_log_record宏

let serializable_record = SerializableLogRecord::from(&record);
let mut builder = log::Record::builder();
logger.log(&SerializableLogRecord::into_log_record!(builder, serializable_record));

许可证

根据以下任一项许可

依赖项

~47–330KB