use ckb_logger::Level; use ckb_logger_service::Logger; mod utils; #[test] fn update_main_logger() { let trace_filter = Level::Trace.as_str(); let (config, _tmp_dir) = utils::config_in_tempdir(|config| { config.filter = Some(trace_filter.to_owned()); config.log_to_file = true; config.log_to_stdout = false; }); let log_file = config.log_dir.join(config.file.as_path()); let line_content_1 = "test update main logger first"; let line_content_2 = "test update main logger second"; let line_content_3 = "test update main logger third"; let line_content_4 = "test update main logger fourth"; let new_level = Level::Info; utils::do_tests(config, || { utils::output_log_for_all_log_levels(line_content_1); Logger::update_main_logger( Some(new_level.as_str().to_owned()), Some(true), None, Some(false), ) .unwrap(); utils::apply_new_config(); utils::output_log_for_all_log_levels(line_content_2); Logger::update_main_logger(Some(trace_filter.to_owned()), None, Some(false), None).unwrap(); utils::apply_new_config(); utils::output_log_for_all_log_levels(line_content_3); Logger::update_main_logger(None, None, Some(true), None).unwrap(); utils::apply_new_config(); utils::output_log_for_all_log_levels(line_content_4); }); for level in utils::all_log_levels() { assert!(utils::has_line_in_log_file( &log_file, *level, line_content_1 ),); } for level in utils::all_log_levels() { assert_eq!( *level <= new_level, utils::has_line_in_log_file(&log_file, *level, line_content_2), ); } for level in utils::all_log_levels() { assert!(!utils::has_line_in_log_file( &log_file, *level, line_content_3 ),); } for level in utils::all_log_levels() { assert!(utils::has_line_in_log_file( &log_file, *level, line_content_4 ),); } }