#![deny(missing_docs)]
#![deny(warnings)]
use failure::Error;
#[macro_export]
macro_rules! logging_setup {
($name:expr) => {{
logging_setup!($name, log::LevelFilter::Debug)
}};
($name:expr, $level:path) => {{
use kubos_app::setup_log;
setup_log($name, $level)
}};
}
pub fn setup_log(name: &str, log_level: log::LevelFilter) -> Result<(), Error> {
use log4rs::append::console::ConsoleAppender;
use log4rs::encode::pattern::PatternEncoder;
use log4rs_syslog::SyslogAppender;
let syslog_encoder = Box::new(PatternEncoder::new("{m}"));
let syslog = Box::new(
SyslogAppender::builder()
.encoder(syslog_encoder)
.openlog(
name,
log4rs_syslog::LogOption::LOG_PID | log4rs_syslog::LogOption::LOG_CONS,
log4rs_syslog::Facility::User,
)
.build(),
);
let stdout = Box::new(ConsoleAppender::builder().build());
let config = log4rs::config::Config::builder()
.appender(log4rs::config::Appender::builder().build("syslog", syslog))
.appender(log4rs::config::Appender::builder().build("stdout", stdout))
.build(
log4rs::config::Root::builder()
.appender("syslog")
.appender("stdout")
.build(log_level),
)?;
log4rs::init_config(config)?;
Ok(())
}