use std::error::Error;
use std::time::Duration;
use log::{info, warn};
use logcontrol_log::{LogController, LogFactory};
use logcontrol_zbus::ConnectionBuilderExt;
struct Factory;
impl LogFactory for Factory {
fn create_console_log(&self) -> Result<Box<dyn log::Log>, logcontrol::LogControl1Error> {
Ok(Box::new(env_logger::Builder::from_default_env().build()))
}
}
#[async_std::main]
async fn main() -> Result<(), Box<dyn Error>> {
let control = LogController::install_auto(Factory, log::Level::Info)?;
let _conn = zbus::connection::Builder::session()?
.name("de.swsnr.logcontrol.LogServerExample")?
.serve_log_control(logcontrol_zbus::LogControl1::new(control))?
.build()
.await?;
loop {
async_std::task::sleep(Duration::from_secs(5)).await;
info!("An message at info level");
async_std::task::sleep(Duration::from_secs(1)).await;
warn!("An message at warning level");
}
}