serializable_log_record 0.3.0

Convert a log::Record to a serializable format. Not as straightforward as it sounds, because the log::Record contains a non-serializable type. This crate provides a way to deal with situation.
Documentation

serializable_log_record

Crates.io Docs MIT/APACHE-2.0

The log::Record struct is not serializable by default. This crate provides a serializable version of the log::Record struct. But most importantly, it provides a macro into_log_record which can concert the serialized record back into a regular record. This is not as straightforward as it sounds since the log::Record struct uses fmt::Arguments in one of its fields which is not serializable due to its extremely strict lifetime.

This crate is a central helper crate for the parallel_logger crate but can be used independently.

Usage

Add the dependency to your Cargo.toml:

[dependencies]
serializable_log_record = "0.3"

How to use in your application:

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

If you enable the serde feature, the SerializableLogRecord struct implements the Serialize and Deserialize traits.

In order to convert the SerializableLogRecord back into a log::Record you can use the into_log_record macro:

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

License

Licensed under either of