LOGGING
(
module_id: &str,
settings: LogsSettings,
)
| 238 | |
| 239 | // LOGGING |
| 240 | pub fn initialize_tracing_log( |
| 241 | module_id: &str, |
| 242 | settings: LogsSettings, |
| 243 | ) -> eyre::Result<(Option<WorkerGuard>, Option<WorkerGuard>)> { |
| 244 | let format = Format::default().with_target(false).compact(); |
| 245 | |
| 246 | let mut stdout_guard = None; |
| 247 | let mut file_guard = None; |
| 248 | let mut layers = Vec::new(); |
| 249 | |
| 250 | if settings.stdout.enabled { |
| 251 | let config = settings.stdout; |
| 252 | |
| 253 | let (writer, guard) = tracing_appender::non_blocking(std::io::stdout()); |
| 254 | stdout_guard = Some(guard); |
| 255 | |
| 256 | let filter = format_crates_filter(Level::INFO.as_str(), config.level.as_str()); |
| 257 | let format = format.clone().with_ansi(config.color); |
| 258 | if config.use_json { |
| 259 | let layer = Layer::default() |
| 260 | .event_format(format) |
| 261 | .json() |
| 262 | .flatten_event(true) |
| 263 | .with_current_span(true) |
| 264 | .with_span_list(false) |
| 265 | .with_writer(writer) |
| 266 | .with_filter(filter) |
| 267 | .boxed(); |
| 268 | |
| 269 | layers.push(layer); |
| 270 | } else { |
| 271 | let layer = Layer::default() |
| 272 | .event_format(format) |
| 273 | .with_writer(writer) |
| 274 | .with_filter(filter) |
| 275 | .boxed(); |
| 276 | |
| 277 | layers.push(layer); |
| 278 | } |
| 279 | }; |
| 280 | |
| 281 | if settings.file.enabled { |
| 282 | let config = settings.file; |
| 283 | |
| 284 | let mut builder = |
| 285 | tracing_appender::rolling::Builder::new().filename_prefix(module_id.to_lowercase()); |
| 286 | if let Some(value) = config.max_files { |
| 287 | builder = builder.max_log_files(value); |
| 288 | } |
| 289 | let file_appender = builder |
| 290 | .rotation(Rotation::DAILY) |
| 291 | .build(config.dir_path) |
| 292 | .expect("failed building rolling file appender"); |
| 293 | let (writer, guard) = tracing_appender::non_blocking(file_appender); |
| 294 | file_guard = Some(guard); |
| 295 | |
| 296 | let filter = format_crates_filter(Level::INFO.as_str(), config.level.as_str()); |
| 297 | let format = format.clone().with_ansi(false); |
no test coverage detected