From ae3c0a9557fc37ad7707ee64234ee9b1480125cd Mon Sep 17 00:00:00 2001 From: mykola2312 Date: Mon, 26 Feb 2024 21:42:10 +0200 Subject: [PATCH] make proper logging to file as well as writing errors to stderr. ditch idea with non_blocking because that's not async thing --- src/bot/bot.rs | 2 +- src/bot/log.rs | 27 ++++++++++++++------------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/bot/bot.rs b/src/bot/bot.rs index c1169a2..6ccd699 100644 --- a/src/bot/bot.rs +++ b/src/bot/bot.rs @@ -1,7 +1,6 @@ use anyhow; use sqlx::migrate::MigrateDatabase; use sqlx::{Sqlite, SqlitePool}; -use tracing::{event, Level}; use std::env; use std::fmt; use std::str; @@ -12,6 +11,7 @@ use teloxide::dispatching::dialogue::InMemStorage; use teloxide::dispatching::UpdateHandler; use teloxide::types::InputFile; use teloxide::{prelude::*, update_listeners::Polling, utils::command::BotCommands}; +use tracing::{event, Level}; use super::log::log_init; use super::util::make_database_url; diff --git a/src/bot/log.rs b/src/bot/log.rs index 2ad8206..664ca9f 100644 --- a/src/bot/log.rs +++ b/src/bot/log.rs @@ -1,25 +1,26 @@ +use std::io; +use tracing::level_filters::LevelFilter; +use tracing_appender::rolling::{RollingFileAppender, Rotation}; +use tracing_subscriber::{fmt, layer::SubscriberExt, prelude::*}; + use super::util::VAR_LOG; -use tracing::Level; -use tracing_appender::{ - non_blocking, - rolling::{RollingFileAppender, Rotation}, -}; -use tracing_subscriber::fmt; pub fn log_init() { - let file_appender = RollingFileAppender::builder() + let log_appender = RollingFileAppender::builder() .rotation(Rotation::DAILY) .filename_prefix("mk-dl-bot.log") .max_log_files(7) .build(VAR_LOG) .unwrap(); - //let (non_blocking, _guard) = non_blocking(file_appender); + let stderr_layer = fmt::layer() + .with_writer(io::stderr) + .with_filter(LevelFilter::ERROR); - let subscriber = fmt() - .with_writer(file_appender) - .with_ansi(true) - .with_max_level(Level::TRACE) - .pretty() + let file_layer = fmt::layer().with_writer(log_appender); + + tracing_subscriber::registry() + .with(stderr_layer) + .with(file_layer) .init(); }