@@ -17,6 +17,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
1717*/
1818use tracing:: { info, trace} ;
1919use tracing_subscriber:: EnvFilter ;
20+ use anyhow:: Context as _;
2021
2122use crate :: { Context , Data , Error } ;
2223
@@ -33,20 +34,56 @@ async fn set_log_level(ctx: Context<'_>, level: String) -> Result<(), Error> {
3334 let data = ctx. data ( ) ;
3435 let reload_handle = data. log_reload_handle . write ( ) . await ;
3536
37+ let enable_debug_libraries_string = std:: env:: var ( "ENABLE_DEBUG_LIBRARIES" )
38+ . context ( "ENABLE_DEBUG_LIBRARIES was not found in the ENV" ) ?;
39+ let enable_debug_libraries: bool = enable_debug_libraries_string
40+ . parse ( )
41+ . context ( "Failed to parse ENABLE_DEBUG_LIBRARIES" ) ?;
42+ let crate_name = env ! ( "CARGO_CRATE_NAME" ) ;
3643 let new_filter = match level. to_lowercase ( ) . as_str ( ) {
37- "trace" => "trace" ,
38- "debug" => "debug" ,
39- "info" => "info" ,
40- "warn" => "warn" ,
41- "error" => "error" ,
44+ "trace" => {
45+ if enable_debug_libraries {
46+ "trace" . to_string ( )
47+ } else {
48+ format ! ( "{crate_name}=trace" )
49+ }
50+ }
51+ "debug" => {
52+ if enable_debug_libraries {
53+ "debug" . to_string ( )
54+ } else {
55+ format ! ( "{crate_name}=debug" )
56+ }
57+ }
58+ "info" => {
59+ if enable_debug_libraries {
60+ "info" . to_string ( )
61+ } else {
62+ format ! ( "{crate_name}=info" )
63+ }
64+ }
65+ "warn" => {
66+ if enable_debug_libraries {
67+ "warn" . to_string ( )
68+ } else {
69+ format ! ( "{crate_name}=warn" )
70+ }
71+ }
72+ "error" => {
73+ if enable_debug_libraries {
74+ "error" . to_string ( )
75+ } else {
76+ format ! ( "{crate_name}=error" )
77+ }
78+ }
4279 _ => {
4380 ctx. say ( "Invalid log level! Use: trace, debug, info, warn, error" )
4481 . await ?;
4582 return Ok ( ( ) ) ;
4683 }
4784 } ;
4885
49- if reload_handle. reload ( EnvFilter :: new ( new_filter) ) . is_ok ( ) {
86+ if reload_handle. reload ( EnvFilter :: new ( & new_filter) ) . is_ok ( ) {
5087 ctx. say ( format ! ( "Log level changed to **{}**" , new_filter) )
5188 . await ?;
5289 info ! ( "Log level changed to {}" , new_filter) ;
0 commit comments