Crate syslog

source ·
Expand description

Syslog

This crate provides facilities to send log messages via syslog. It supports Unix sockets for local syslog, UDP and TCP for remote servers.

Messages can be passed directly without modification, or in RFC 3164 or RFC 5424 format

The code is available on Github

Example

use syslog::{Facility, Formatter3164};

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

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

It can be used directly with the log crate as follows:

extern crate log;

use syslog::{Facility, Formatter3164, BasicLogger};
use log::{SetLoggerError, LevelFilter, info};

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

let logger = match syslog::unix(formatter) {
    Err(e) => { println!("impossible to connect to syslog: {:?}", e); return; },
    Ok(logger) => logger,
};
log::set_boxed_logger(Box::new(BasicLogger::new(logger)))
        .map(|()| log::set_max_level(LevelFilter::Info));

info!("hello world");

Structs

Enums

Traits

Functions

  • Initializes logging subsystem for log crate
  • TCP Logger init function compatible with log crate
  • UDP Logger init function compatible with log crate
  • Unix socket Logger init function compatible with log crate
  • Unix socket Logger init function compatible with log crate and user provided socket path
  • returns a TCP logger connecting local and server
  • returns a UDP logger connecting local and server
  • Returns a Logger using unix socket to target local syslog ( using /dev/log or /var/run/syslog)
  • Returns a Logger using unix socket to target local syslog at user provided path

Type Definitions