MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/splashsurf / initialize_logging

Function initialize_logging

splashsurf/src/logging.rs:76–138  ·  view source on GitHub ↗

Initializes logging with fern

(
    verbosity: VerbosityLevel,
    quiet_mode: bool,
)

Source from the content-addressed store, hash-verified

74
75/// Initializes logging with fern
76pub(crate) fn initialize_logging(
77 verbosity: VerbosityLevel,
78 quiet_mode: bool,
79) -> Result<(), anyhow::Error> {
80 let mut unknown_log_filter_level = None;
81 let log_filter_level = if quiet_mode {
82 // First option: disable logging in quiet mode
83 log::LevelFilter::Off
84 } else {
85 // Second option: use verbosity level
86 verbosity.into_filter().unwrap_or_else(|| {
87 // Third option: use log level from env
88 if let Some(log_level) = env::var_os("RUST_LOG") {
89 let log_level = log_level.to_string_lossy().to_ascii_lowercase();
90 match log_level.as_str() {
91 "off" => log::LevelFilter::Off,
92 "error" => log::LevelFilter::Error,
93 "warn" => log::LevelFilter::Warn,
94 "info" => log::LevelFilter::Info,
95 "debug" => log::LevelFilter::Debug,
96 "trace" => log::LevelFilter::Trace,
97 _ => {
98 unknown_log_filter_level = Some(log_level);
99 log::LevelFilter::Info
100 }
101 }
102 } else {
103 // Fourth option: use default level
104 log::LevelFilter::Info
105 }
106 })
107 };
108
109 if matches!(verbosity, VerbosityLevel::None) {
110 build_logger(log_filter_level, |out, message, record| {
111 out.finish(format_args!(
112 "[{}][{}] {}",
113 chrono::Local::now().format("%T%.3f"),
114 record.level(),
115 message
116 ))
117 })?;
118 } else {
119 build_logger(log_filter_level, |out, message, record| {
120 out.finish(format_args!(
121 "[{}][{}][{}] {}",
122 chrono::Local::now().to_rfc3339_opts(chrono::SecondsFormat::Micros, false),
123 record.target(),
124 record.level(),
125 message
126 ))
127 })?;
128 }
129
130 if let Some(filter_level) = unknown_log_filter_level {
131 error!(
132 "Unknown log filter level '{}' defined in 'RUST_LOG' env variable, using INFO instead.",
133 filter_level

Callers 1

run_splashsurf_implFunction · 0.85

Calls 2

build_loggerFunction · 0.85
into_filterMethod · 0.80

Tested by

no test coverage detected