Skip to content

Commit 1e50e00

Browse files
committed
feat: duplicate error logs into separate file
Signed-off-by: Zheming Li <nkdudu@126.com>
1 parent 9ad6c45 commit 1e50e00

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/common/telemetry/src/logging.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ use tracing_bunyan_formatter::{BunyanFormattingLayer, JsonStorageLayer};
2626
use tracing_log::LogTracer;
2727
use tracing_subscriber::fmt::Layer;
2828
use tracing_subscriber::layer::SubscriberExt;
29+
use tracing_subscriber::prelude::*;
2930
use tracing_subscriber::{filter, EnvFilter, Registry};
3031

3132
pub use crate::{debug, error, info, log, trace, warn};
@@ -77,6 +78,15 @@ pub fn init_global_logging(
7778
let file_logging_layer = BunyanFormattingLayer::new(app_name.to_string(), rolling_writer);
7879
guards.push(rolling_writer_guard);
7980

81+
// error JSON log layer.
82+
let err_rolling_appender =
83+
RollingFileAppender::new(Rotation::HOURLY, dir, format!("{}-{}", app_name, "err"));
84+
let (err_rolling_writer, err_rolling_writer_guard) =
85+
tracing_appender::non_blocking(err_rolling_appender);
86+
let err_file_logging_layer =
87+
BunyanFormattingLayer::new(app_name.to_string(), err_rolling_writer);
88+
guards.push(err_rolling_writer_guard);
89+
8090
// Use env RUST_LOG to initialize log if present.
8191
// Otherwise use the specified level.
8292
let directives = env::var(EnvFilter::DEFAULT_ENV).unwrap_or_else(|_x| level.to_string());
@@ -99,7 +109,8 @@ pub fn init_global_logging(
99109
.with(filter)
100110
.with(JsonStorageLayer)
101111
.with(stdout_logging_layer)
102-
.with(file_logging_layer);
112+
.with(file_logging_layer)
113+
.with(err_file_logging_layer.with_filter(filter::LevelFilter::ERROR));
103114

104115
// Must enable 'tokio_unstable' cfg, https://github.com/tokio-rs/console
105116
#[cfg(feature = "console")]

0 commit comments

Comments
 (0)