From d5b5d156b7e11d209e183879561cd706d2b8e1c2 Mon Sep 17 00:00:00 2001 From: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Tue, 27 Feb 2024 01:13:43 +0200 Subject: [PATCH] make a layer filter to to prevent polling timeout errors from clogging logs --- src/bot/log.rs | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/bot/log.rs b/src/bot/log.rs index b386e55..57c7a89 100644 --- a/src/bot/log.rs +++ b/src/bot/log.rs @@ -1,10 +1,26 @@ use std::io; -use tracing::level_filters::LevelFilter; +use tracing::{level_filters::LevelFilter, Subscriber}; use tracing_appender::rolling::{RollingFileAppender, Rotation}; -use tracing_subscriber::{fmt, layer::SubscriberExt, prelude::*}; +use tracing_subscriber::{fmt, layer::SubscriberExt, layer::Filter, prelude::*}; use super::util::VAR_LOG; +// A layer filter to prevent polling timeout errors from clogging logs +struct TeloxideNoiseFilter {} +impl Filter for TeloxideNoiseFilter { + fn enabled(&self, meta: &tracing::Metadata<'_>, _: &tracing_subscriber::layer::Context<'_,S>) -> bool { + if let Some(module_path) = meta.module_path() { + if module_path == "teloxide::error_handlers" { + false + } else { + true + } + } else { + true + } + } +} + pub fn log_init() { let log_appender = RollingFileAppender::builder() .rotation(Rotation::DAILY) @@ -15,10 +31,12 @@ pub fn log_init() { let stderr_layer = fmt::layer() .with_writer(io::stderr) + .with_filter(TeloxideNoiseFilter {}) .with_filter(LevelFilter::ERROR); let file_layer = fmt::layer() .with_writer(log_appender) + .with_filter(TeloxideNoiseFilter {}) .with_filter(LevelFilter::INFO); tracing_subscriber::registry()