@@ -6,74 +6,63 @@ use tracing::Level;
66pub use tracing_appender:: non_blocking;
77pub use tracing_appender:: non_blocking:: WorkerGuard ;
88use tracing_appender:: rolling:: RollingFileAppender ;
9- use tracing_subscriber:: { fmt, fmt:: Subscriber , layer:: SubscriberExt , Layer } ;
9+ use tracing_subscriber:: { fmt, fmt:: Subscriber , layer:: SubscriberExt , Layer , LogLevel } ;
1010
11- use crate :: traces_settings:: { FileLayerSettings , LogLevel , TracesSettings } ;
11+ use crate :: traces_settings:: { FileLayerSettings , TracesSettings } ;
1212use crate :: tracing_layers:: DomainEventFilterLayer ;
13- use anyhow:: Result ;
1413
15- pub fn create_subscriber ( ) -> Subscriber {
14+ //
15+ pub fn create_temporary_subscriber ( ) -> Subscriber {
1616 tracing_subscriber:: FmtSubscriber :: builder ( )
1717 . with_max_level ( Level :: TRACE )
1818 . with_target ( false )
1919 . with_file ( true )
2020 . with_line_number ( true )
21- // builds the subscriber.
2221 . finish ( )
2322}
2423
25- pub fn set_global_tracing_subscriber ( config : & TracesSettings ) -> Result < WorkerGuard > {
24+ pub fn set_global_tracing_subscriber ( config : & TracesSettings ) -> Option < WorkerGuard > {
25+ let console_filter = match config. console {
26+ Some ( console_settings) => console_settings. level_to_filter ( ) ,
27+ None => LogLevel :: default ( ) . to_filter ( ) ,
28+ } ;
29+
2630 // log all traces to stderr (reserving stdout for any actual output such as from the CLI commands)
2731 let console_layer = fmt:: layer ( )
2832 . with_writer ( std:: io:: stderr)
2933 . with_target ( false )
3034 . with_file ( true )
3135 . with_line_number ( true )
32- . with_filter (
33- config
34- . console
35- . level
36+ . with_filter ( console_filter) ;
37+
38+ let ( file_layer, file_guard) = match config. file {
39+ Some ( file_settings) if file_settings. enabled => {
40+ let ( non_blocking, file_guard) = non_blocking ( create_file_appender ( & file_settings) ) ;
41+
42+ let file_layer = fmt:: layer ( )
43+ . json ( )
44+ . with_writer ( non_blocking)
45+ . with_span_events ( fmt:: format:: FmtSpan :: CLOSE )
46+ . with_target ( false )
47+ . with_file ( true )
48+ . with_line_number ( true )
49+ . with_filter ( file_settings. level_to_filter ( ) ) ;
50+
51+ let domains = file_settings
52+ . domain_filter
3653 . as_ref ( )
37- . unwrap_or ( & LogLevel :: default ( ) )
38- . to_filter ( ) ?,
39- ) ;
54+ . map ( |v| v. iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ) ;
55+
56+ let events = file_settings
57+ . events_filter
58+ . as_ref ( )
59+ . map ( |v| v. iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ) ;
60+
61+ let file_layer = DomainEventFilterLayer :: new ( domains, events, file_layer) ;
4062
41- let ( file_layer, file_guard) = if config. file . enabled {
42- let ( non_blocking, file_guard) = non_blocking ( create_file_appender ( & config. file ) ) ;
43-
44- let file_layer = fmt:: layer ( )
45- . json ( )
46- . with_writer ( non_blocking)
47- . with_span_events ( fmt:: format:: FmtSpan :: CLOSE )
48- . with_target ( false )
49- . with_file ( true )
50- . with_line_number ( true )
51- . with_filter (
52- config
53- . file
54- . level
55- . as_ref ( )
56- . unwrap_or ( & LogLevel :: default ( ) )
57- . to_filter ( ) ?,
58- ) ;
59-
60- let domains = config
61- . file
62- . domain_filter
63- . as_ref ( )
64- . map ( |v| v. iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ) ;
65-
66- let events = config
67- . file
68- . events_filter
69- . as_ref ( )
70- . map ( |v| v. iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ) ;
71-
72- let file_layer = DomainEventFilterLayer :: new ( domains, events, file_layer) ;
73-
74- ( Some ( file_layer) , Some ( file_guard) )
75- } else {
76- ( None , None )
63+ ( Some ( file_layer) , Some ( file_guard) )
64+ }
65+ _ => ( None , None ) ,
7766 } ;
7867
7968 let registry = tracing_subscriber:: registry ( )
@@ -83,7 +72,7 @@ pub fn set_global_tracing_subscriber(config: &TracesSettings) -> Result<WorkerGu
8372 tracing:: subscriber:: set_global_default ( registry)
8473 . expect ( "Unable to set a global tracing subscriber" ) ;
8574
86- file_guard. ok_or_else ( || anyhow :: anyhow! ( "file guard not created" ) )
75+ file_guard
8776}
8877
8978fn create_file_appender ( settings : & FileLayerSettings ) -> RollingFileAppender {
0 commit comments