log4rs-gelf

Build Status Latest version Documentation License

log4rs-gelf - A TCP/Gelf appender for log4rs based on serdegelf and gelflogger.

Examples

Configuration via a YAML file:

yaml appenders: ldp: additional_fields: component: rust-cs buffer_duration: 5 buffer_size: 5 hostname: 127.0.0.1 kind: buffer level: Informational null_character: true port: 12202 use_tls: false root: appenders: - ldp level: info

rust,no_run log4rs_gelf::init_file("/tmp/log4rs.yml", None).unwrap();

Programmatically constructing a configuration:

```rust,norun use serdegelf::GelfLevel; use serde_value::Value; use log4rs::config::{Config, Appender, Root}; use log::LevelFilter;

fn main() { let buffer = log4rsgelf::BufferAppender::builder() .setlevel(GelfLevel::Informational) .sethostname("localhost") .setport(12202) .setusetls(false) .setnullcharacter(true) .setbuffersize(Some(5)) .setbufferduration(Some(5)) .putadditionalfield("component", Value::String("rust-cs".to_string())) .build() .unwrap();

let config = Config::builder() .appender(Appender::builder().build("gelf", Box::new(buffer))) .build(Root::builder().appender("gelf").build(LevelFilter::Info)) .unwrap();

log4rsgelf::initconfig(config).unwrap();

// Do whatever

log4rs_gelf::flush().expect("Failed to send buffer, log records can be lost !"); } ```

OVH Log Data Platform

You can activate the OVH LDP feature including field typing and an preconfigured handler:

toml [dependencies] log4rs_gelf = { version = "0.1", features = ["ovh-ldp"] }

And then build the appender:

rust,no_run let buffer = BufferAppender::builder("gra1.logs.ovh.com","XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX") .put_additional_field("component", Value::String("rust-cs".to_string())) .build() .unwrap();

License

Licensed under BSD 3-Clause License or (https://opensource.org/licenses/BSD-3-Clause)