@@ -21,11 +21,8 @@ use databend_common_base::base::GlobalInstance;
2121use databend_common_base:: runtime:: Thread ;
2222use fastrace:: prelude:: * ;
2323use log:: LevelFilter ;
24- use log:: Metadata ;
2524use logforth:: filter:: env:: EnvFilterBuilder ;
26- use logforth:: filter:: CustomFilter ;
2725use logforth:: filter:: EnvFilter ;
28- use logforth:: filter:: FilterResult ;
2926use logforth:: Dispatch ;
3027use logforth:: Logger ;
3128use opentelemetry_otlp:: WithExportConfig ;
@@ -72,6 +69,16 @@ pub fn inject_span_to_tonic_request<T>(msg: impl tonic::IntoRequest<T>) -> tonic
7269 request
7370}
7471
72+ fn env_filter ( level : & str ) -> EnvFilter {
73+ EnvFilter :: new (
74+ EnvFilterBuilder :: new ( )
75+ . filter ( Some ( "databend::log::query" ) , LevelFilter :: Off )
76+ . filter ( Some ( "databend::log::profile" ) , LevelFilter :: Off )
77+ . filter ( Some ( "databend::log::structlog" ) , LevelFilter :: Off )
78+ . parse ( level) ,
79+ )
80+ }
81+
7582pub fn init_logging (
7683 log_name : & str ,
7784 cfg : & Config ,
@@ -180,28 +187,15 @@ pub fn init_logging(
180187 _drop_guards. push ( flush_guard) ;
181188
182189 let dispatch = Dispatch :: new ( )
183- . filter ( EnvFilter :: new (
184- EnvFilterBuilder :: new ( )
185- . filter ( Some ( "databend::log::query" ) , LevelFilter :: Off )
186- . filter ( Some ( "databend::log::profile" ) , LevelFilter :: Off )
187- . filter ( Some ( "databend::log::structlog" ) , LevelFilter :: Off )
188- . parse ( & cfg. file . level ) ,
189- ) )
190- . filter ( make_log_filter ( & cfg. file . prefix_filter ) )
190+ . filter ( env_filter ( & cfg. file . level ) )
191191 . append ( normal_log_file. with_layout ( get_layout ( & cfg. file . format ) ) ) ;
192192 logger = logger. dispatch ( dispatch) ;
193193 }
194194
195195 // console logger
196196 if cfg. stderr . on {
197197 let dispatch = Dispatch :: new ( )
198- . filter ( EnvFilter :: new (
199- EnvFilterBuilder :: new ( )
200- . filter ( Some ( "databend::log::query" ) , LevelFilter :: Off )
201- . filter ( Some ( "databend::log::profile" ) , LevelFilter :: Off )
202- . filter ( Some ( "databend::log::structlog" ) , LevelFilter :: Off )
203- . parse ( & cfg. stderr . level ) ,
204- ) )
198+ . filter ( env_filter ( & cfg. stderr . level ) )
205199 . append (
206200 logforth:: append:: Stderr :: default ( ) . with_layout ( get_layout ( & cfg. stderr . format ) ) ,
207201 ) ;
@@ -227,33 +221,15 @@ pub fn init_logging(
227221 . build ( )
228222 . expect ( "initialize opentelemetry logger" ) ;
229223 let dispatch = Dispatch :: new ( )
230- . filter ( EnvFilter :: new (
231- EnvFilterBuilder :: new ( )
232- . filter ( Some ( "databend::log::query" ) , LevelFilter :: Off )
233- . filter ( Some ( "databend::log::profile" ) , LevelFilter :: Off )
234- . filter ( Some ( "databend::log::structlog" ) , LevelFilter :: Off )
235- . parse ( & cfg. otlp . level ) ,
236- ) )
224+ . filter ( env_filter ( & cfg. otlp . level ) )
237225 . append ( otel) ;
238226 logger = logger. dispatch ( dispatch) ;
239227 }
240228
241229 // log to fastrace
242230 if cfg. tracing . on || cfg. structlog . on {
243- let level = cfg
244- . tracing
245- . capture_log_level
246- . parse ( )
247- . ok ( )
248- . unwrap_or ( LevelFilter :: Info ) ;
249231 let dispatch = Dispatch :: new ( )
250- . filter ( EnvFilter :: new (
251- EnvFilterBuilder :: new ( )
252- . filter ( Some ( "databend::log::query" ) , LevelFilter :: Off )
253- . filter ( Some ( "databend::log::profile" ) , LevelFilter :: Off )
254- . filter ( Some ( "databend::log::structlog" ) , LevelFilter :: Off ) ,
255- ) )
256- . filter ( level)
232+ . filter ( env_filter ( & cfg. tracing . capture_log_level ) )
257233 . append ( logforth:: append:: FastraceEvent :: default ( ) ) ;
258234 logger = logger. dispatch ( dispatch) ;
259235 }
@@ -365,35 +341,3 @@ pub fn init_logging(
365341
366342 _drop_guards
367343}
368-
369- /// Creates a log filter that matches log entries based on specified target prefixes or severity.
370- fn make_log_filter ( prefix_filter : & str ) -> CustomFilter {
371- let prefixes = prefix_filter
372- . split ( ',' )
373- . map ( |x| x. to_string ( ) )
374- . collect :: < Vec < _ > > ( ) ;
375-
376- CustomFilter :: new ( move |meta| match_prefix ( meta, & prefixes) )
377- }
378-
379- fn match_prefix ( meta : & Metadata , prefixes : & [ String ] ) -> FilterResult {
380- if is_severe ( meta) {
381- return FilterResult :: Neutral ;
382- }
383-
384- for p in prefixes {
385- if meta. target ( ) . starts_with ( p) {
386- return FilterResult :: Accept ;
387- }
388- }
389-
390- FilterResult :: Reject
391- }
392-
393- /// Return true if the log level is considered severe.
394- ///
395- /// Severe logs ignores the prefix filter.
396- fn is_severe ( meta : & Metadata ) -> bool {
397- // For other component, output logs with level <= WARN
398- meta. level ( ) <= LevelFilter :: Warn
399- }
0 commit comments