syslog-too 0.1.1

A small library to send log messages to syslog locally and over TCP or UDP using Rust. A continuation of the syslog crate.
Documentation
# syslog-too: Simple facade library used to create and send syslog messages in Rust.

[![pipeline status](https://gitlab.com/ngreese/syslog-too/badges/main/pipeline.svg)](https://gitlab.com/ngreese/syslog-too/-/commits/main)
[![Latest Release](https://gitlab.com/ngreese/syslog-too/-/badges/release.svg)](https://gitlab.com/ngreese/syslog-too/-/releases)

## Introduction

A small library to send log messages to syslog locally and over TCP or UDP using Rust. A continuation of [syslog](https://github.com/Geal/rust-syslog).

## Installation

syslog-too is available on [crates.io](https://crates.io/crates/syslog-too) and can be included in your Cargo enabled by executing the following command in the root of your project:

```shell
cargo add syslog-too
```

## documentation

Reference documentation is available on [docs.rs](https://docs.rs/syslog-too).

## Example

```rust
extern crate syslog_too;

use syslog_too::{Facility, Formatter3164};

fn main() {
  let formatter = Formatter3164 {
    facility: Facility::LOG_USER,
    hostname: None,
    process: "myprogram".into(),
    pid: 42,
  };

  match syslog_too::unix(formatter) {
    Err(e)         => println!("impossible to connect to syslog: {:?}", e),
    Ok(mut writer) => {
      writer.err("hello world").expect("could not write error message");
    }
  }
}
```

The struct `syslog_too::Logger` implements `Log` from the `log` crate, so it can be used as backend for other logging systems:

```rust
extern crate syslog_too;
#[macro_use]
extern crate log;

use syslog_too::{Facility, Formatter3164, Logger3164};
use log::{SetLoggerError, LevelFilter};

fn main() {
    let formatter = Formatter3164 {
        facility: Facility::LOG_USER,
        hostname: None,
        process: "myprogram".into(),
        pid: 0,
    };

    let logger = syslog_too::unix(formatter).expect("could not connect to syslog");
    log::set_boxed_logger(Box::new(Logger3164::new(logger)))
            .map(|()| log::set_max_level(LevelFilter::Info));

    info!("hello world");
}

```

There are 3 functions to create loggers:

* the `unix` function sends to the local syslog through a Unix socket: `syslog_too::unix(formatter)`
* the `tcp` function takes an address for a remote TCP syslog server: `tcp(formatter, "127.0.0.1:4242")`
* the `udp` function takes an address for a local port, and the address remote UDP syslog server: `udp(formatter, "127.0.0.1:1234", "127.0.0.1:4242")`