# Structured Persistent Logger
`structured_persistent_logger` is a Rust crate providing a structured logging solution that is compatible with the standard `log` crate. It features persistent logging capabilities, allowing for the retention and structured formatting of log records.
## Features
- Integration with the standard `log` crate.
- Structured logging with JSON formatting.
- Persistent logging capabilities across application lifecycle.
- Thread-safe logging with support for multi-threaded environments.
## Installation
Add `structured_persistent_logger` to your `Cargo.toml`:
```toml
[dependencies]
structured_persistent_logger = "0.1.0"
log = "0.4.0"
```
## Usage
To use `structured_persistent_logger`, initialize it at the start of your application:
```rust
use structured_persistent_logger::StructuredPersistentLogger;
fn main() {
StructuredPersistentLogger::init();
add_persistent_logs! {
"key1" => json!("value1"),
"key2" => json!({"nested": "structure"})
};
log::info!("This is an info message");
// output:
// {
// "key1": "value1",
// "key2": { "nested": "structure" },
// "message": "This is an info message",
// "level": "INFO"
// }
}
```
### Adding Persistent Logs
You can add persistent logs that will be included in every log message:
```rust
use structured_persistent_logger::add_persistent_logs;
use serde_json::json;
fn some_function() {
add_persistent_logs! {
"key1" => json!("value1"),
"key2" => json!(123)
};
}
```
## Configuration
The logger can be configured to adjust its behavior, such as setting log levels or customizing the format of log entries.
## Contributing
We welcome contributions to `structured_persistent_logger`! Please feel free to submit pull requests or open issues to improve the library.
## License
This crate is licensed under [MIT license](LICENSE).