#[macro_use]
extern crate log;
extern crate gelf;
mod shared;
use gelf::*;
use log::LevelFilter as LogLevelFilter;
use shared::*;
const LOG_FILTER: LogLevelFilter = LogLevelFilter::Trace;
const MESSAGE_COMPRESSION: MessageCompression = MessageCompression::None;
const CHUNK_SIZE: ChunkSize = ChunkSize::LAN;
static HOSTNAME: &'static str = "test.local";
fn main() {
let mut options = Options {
gelf_host: String::from("127.0.0.1:12201"),
run_debug_server: true,
};
options.populate(::std::env::args());
let mut backend = UdpBackend::new_with_chunksize(options.gelf_host.clone(), CHUNK_SIZE)
.expect("Failed to create a UDP backend");
backend.set_compression(MESSAGE_COMPRESSION);
let mut logger = Logger::new(Box::new(backend)).expect("Failed to create the logger");
logger.set_hostname(String::from(HOSTNAME));
logger.set_default_metadata(
String::from("facility"),
String::from(
::std::env::current_exe()
.unwrap()
.as_path()
.to_string_lossy(),
),
);
logger
.install(LOG_FILTER)
.expect("Failed to install the logger");
let thread = if options.run_debug_server {
let host = options.gelf_host.clone();
Some(::std::thread::spawn(|| {
run_debug_server_udp(host, 1);
}))
} else {
None
};
trace!("trace");
debug!("debug");
info!("info");
warn!("warn");
error!("error");
if let Some(handle) = thread {
handle
.join()
.expect("Failed to shutdown debug graylog server");
}
}