Crates.io | serializable_log_record |
lib.rs | serializable_log_record |
version | 0.3.2 |
source | src |
created_at | 2024-02-19 13:33:08.917988 |
updated_at | 2024-02-19 22:26:25.317491 |
description | 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. |
homepage | |
repository | https://github.com/8192K/serializable_log_record |
max_upload_size | |
id | 1145224 |
size | 21,867 |
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 convert 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.
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.
If you enable the bincode2
feature, the SerializableLogRecord
struct implements the Encode
and Decode
traits for bincode 2.
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));
Licensed under either of