Skip to content

Commit

Permalink
add custom logger log level functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
isaidsari committed May 26, 2024
1 parent 1e3282d commit 4b6ad33
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 24 deletions.
38 changes: 21 additions & 17 deletions src/logger.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ use crate::logs::persistence::{insert_app_log, AppLog, LogLevel};

pub struct LogService {
#[allow(dead_code)]
sender: mpsc::Sender<AppLog>,
channel: (mpsc::Sender<AppLog>, mpsc::Receiver<AppLog>),
builder: env_logger::Builder,
}

pub struct CustomPipe {
Expand Down Expand Up @@ -64,18 +65,16 @@ impl Write for CustomPipe {
impl LogService {
pub fn new() -> Self {
// Create a buffer channel for asynchronous processing
let (buffer_tx, mut buffer_rx) = mpsc::channel::<AppLog>(100);
let this = LogService {
sender: mpsc::Sender::clone(&buffer_tx),
let mut this = LogService {
channel: mpsc::channel::<AppLog>(100),
builder: env_logger::builder(),
};

let mut builder = env_logger::builder();
this.builder.target(env_logger::Target::Pipe(Box::new(CustomPipe::new(
Arc::new(Mutex::new(this.channel.0.clone()),
)))));

builder.target(env_logger::Target::Pipe(Box::new(CustomPipe::new(
Arc::new(Mutex::new(buffer_tx)),
))));

builder.format(|buf, record| {
this.builder.format(|buf, record| {
let dt = Local::now();

// TODO(isaidsari): use library for this
Expand Down Expand Up @@ -109,21 +108,26 @@ impl LogService {
)
});

builder.filter_level(log::LevelFilter::Debug);
this

}

pub fn set_level(mut self, level: log::LevelFilter) -> Self {
self.builder.filter_level(level);
self
}

builder.init();
pub fn build(mut self) {
self.builder.init();

// Spawn the task for processing the buffer asynchronously
tokio::spawn(async move {
while let Some(app_log) = buffer_rx.recv().await {
let _ = tokio::spawn(async move {
while let Some(app_log) = self.channel.1.recv().await {
println!("app log received at {}", app_log.message);
insert_app_log(&app_log)
.await
.expect("Failed to insert app log");
}
});

this
}
}

Expand Down
14 changes: 7 additions & 7 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,12 +95,17 @@ async fn shutdown_signal() {
#[cfg(test)]
#[ctor::ctor]
fn init_tests() {
//logger::LogService::new(true);
logger::LogService::new().set_level(log::LevelFilter::Debug).build();
}

#[tokio::main]
async fn main() {
logger::LogService::new();

if cfg!(debug_assertions) {
logger::LogService::new().set_level(log::LevelFilter::Debug).build();
} else {
logger::LogService::new().set_level(log::LevelFilter::Info).build();
}

let socket_addr = match get_socket_addr() {
Some(addr) => addr,
Expand All @@ -119,11 +124,6 @@ async fn main() {
}
};

//logger::LogService::new();
// env_logger::builder()
// .filter_level(log::LevelFilter::Debug)
// .init();

match monitor::init().await {
Ok(_) => {}
Err(_) => {
Expand Down

0 comments on commit 4b6ad33

Please sign in to comment.