v0.1.1 + adds example to README

This commit is contained in:
itsscb 2024-07-17 15:24:03 +02:00
parent ffe2d18cfb
commit 65a6acc0be
2 changed files with 38 additions and 2 deletions

View File

@ -1,6 +1,6 @@
[package]
name = "tracing-layer-win-eventlog"
version = "0.1.0"
version = "0.1.1"
edition = "2021"
author = ["itsscb <dev@itsscb.de>"]
description = "Layer for the tracing_subscriber to write to the Windows EventLog"

View File

@ -2,17 +2,53 @@
Layer for the *tracing_subscriber* to write to the Windows EventLog
## Usage
If the Windows EventLog does not yet exist, it has to be created first.
```powershell
# PowerShell v5.1 running as Administrator
New-EventLog -LogName Application -Source hello_world
```
```rust
use tracing_subscriber::{layer::SubscriberExt as _, util::SubscriberInitExt as _};
fn main() {
println!("Hello, world!");
let eventlog = tracing_layer_win_eventlog::EventLogLayer::new("hello_world".to_owned());
tracing_subscriber::registry()
.with(tracing_layer_win_eventlog::EventLogLayer)
.with(eventlog)
.init();
tracing::info!(id = 40, "hello world!");
}
```
The `id` is optional and used as the Windows EventID and has to be `unsigned`. If no `id` is given, the `tracing::Level` will be used as the EventID.
The parent spans are listed above the message in the `source` key. If there are multiple parent spans they are concatenated with the `/` separator.
All other objects that are passed are written below the message in a `key: value` pair.
### Example
```rust
#[tracing::instrument]
fn windows() {
let path = "C:\\Windows";
tracing::debug!(id=2,?path,"currently in windir");
}
```
The above example will be written to the EventLog as follows:
```
ID: 2
source: windows
message: currently in windir
path: "\"C:\\Windows\""
```