@@ -30,7 +30,7 @@ use jni::{
3030 objects:: { JClass , JString } ,
3131 JNIEnv , JavaVM ,
3232} ;
33- use log:: { info, LevelFilter } ;
33+ use log:: info;
3434use log4rs:: {
3535 append:: console:: { ConsoleAppender , Target } ,
3636 config:: { load_config_file, Appender , Deserializers , Root } ,
@@ -70,6 +70,7 @@ pub extern "system" fn Java_org_apache_comet_NativeBase_init(
7070 e : JNIEnv ,
7171 _: JClass ,
7272 log_conf_path : JString ,
73+ log_level : JString ,
7374) {
7475 // Initialize the error handling to capture panic backtraces
7576 errors:: init ( ) ;
@@ -80,7 +81,11 @@ pub extern "system" fn Java_org_apache_comet_NativeBase_init(
8081 // empty path means there is no custom log4rs config file provided, so fallback to use
8182 // the default configuration
8283 let log_config = if path. is_empty ( ) {
83- default_logger_config ( )
84+ let log_level: String = match env. get_string ( & log_level) {
85+ Ok ( level) => level. into ( ) ,
86+ Err ( _) => "info" . parse ( ) . unwrap ( ) ,
87+ } ;
88+ default_logger_config ( & log_level)
8489 } else {
8590 load_config_file ( path, Deserializers :: default ( ) )
8691 . map_err ( |err| CometError :: Config ( err. to_string ( ) ) )
@@ -100,14 +105,18 @@ pub extern "system" fn Java_org_apache_comet_NativeBase_init(
100105
101106const LOG_PATTERN : & str = "{d(%y/%m/%d %H:%M:%S)} {l} {f}: {m}{n}" ;
102107
103- // Creates a default log4rs config, which logs to console with `INFO` level.
104- fn default_logger_config ( ) -> CometResult < Config > {
108+ // Creates a default log4rs config, which logs to console with log level.
109+ fn default_logger_config ( log_level : & str ) -> CometResult < Config > {
105110 let console_append = ConsoleAppender :: builder ( )
106111 . target ( Target :: Stderr )
107112 . encoder ( Box :: new ( PatternEncoder :: new ( LOG_PATTERN ) ) )
108113 . build ( ) ;
109114 let appender = Appender :: builder ( ) . build ( "console" , Box :: new ( console_append) ) ;
110- let root = Root :: builder ( ) . appender ( "console" ) . build ( LevelFilter :: Info ) ;
115+ let root = Root :: builder ( ) . appender ( "console" ) . build (
116+ log_level
117+ . parse ( )
118+ . map_err ( |err| CometError :: Config ( format ! ( "{err}" ) ) ) ?,
119+ ) ;
111120 Config :: builder ( )
112121 . appender ( appender)
113122 . build ( root)
0 commit comments