@@ -16,7 +16,7 @@ use tokio::{
1616 fs,
1717 runtime:: { Builder , Runtime } ,
1818} ;
19- use tracing_subscriber:: prelude:: * ;
19+ use tracing_subscriber:: { prelude:: * , EnvFilter } ;
2020use url:: Url ;
2121
2222mod actor;
@@ -239,8 +239,34 @@ fn init_tracing() {
239239 tracing_subscriber:: registry ( )
240240 . with (
241241 tracing_logfmt:: builder ( )
242+ . with_span_name ( std:: env:: var ( "RUST_LOG_SPAN_NAME" ) . map_or ( false , |x| x == "1" ) )
243+ . with_span_path ( std:: env:: var ( "RUST_LOG_SPAN_PATH" ) . map_or ( false , |x| x == "1" ) )
244+ . with_target ( std:: env:: var ( "RUST_LOG_TARGET" ) . map_or ( false , |x| x == "1" ) )
245+ . with_location ( std:: env:: var ( "RUST_LOG_LOCATION" ) . map_or ( false , |x| x == "1" ) )
246+ . with_module_path ( std:: env:: var ( "RUST_LOG_MODULE_PATH" ) . map_or ( false , |x| x == "1" ) )
247+ . with_ansi_color ( std:: env:: var ( "RUST_LOG_ANSI_COLOR" ) . map_or ( false , |x| x == "1" ) )
242248 . layer ( )
243- . with_filter ( tracing_subscriber :: filter :: LevelFilter :: INFO ) ,
249+ . with_filter ( env_filter ( "RUST_LOG" ) ) ,
244250 )
245251 . init ( ) ;
246252}
253+
254+ fn env_filter ( env_var : & str ) -> EnvFilter {
255+ // Create env filter
256+ let mut env_filter = EnvFilter :: default ( )
257+ // Default filter
258+ . add_directive ( "info" . parse ( ) . unwrap ( ) )
259+ // Disable verbose logs
260+ . add_directive ( "tokio_cron_scheduler=warn" . parse ( ) . unwrap ( ) )
261+ . add_directive ( "tokio=warn" . parse ( ) . unwrap ( ) )
262+ . add_directive ( "hyper=warn" . parse ( ) . unwrap ( ) )
263+ . add_directive ( "h2=warn" . parse ( ) . unwrap ( ) ) ;
264+
265+ if let Ok ( filter) = std:: env:: var ( env_var) {
266+ for s in filter. split ( ',' ) . filter ( |x| !x. is_empty ( ) ) {
267+ env_filter = env_filter. add_directive ( s. parse ( ) . expect ( "invalid env filter" ) ) ;
268+ }
269+ }
270+
271+ env_filter
272+ }
0 commit comments