(session_log_dir: &Path, log_level: tracing::Level)
| 348 | } |
| 349 | |
| 350 | pub fn init_file_logging_at(session_log_dir: &Path, log_level: tracing::Level) -> CliLogPaths { |
| 351 | fs::create_dir_all(session_log_dir).ok(); |
| 352 | let paths = build_log_paths(session_log_dir); |
| 353 | |
| 354 | let app_writer = create_rotating_writer(session_log_dir, "app"); |
| 355 | let ai_writer = create_rotating_writer(session_log_dir, "ai"); |
| 356 | let flashgrep_writer = create_rotating_writer(session_log_dir, "flashgrep"); |
| 357 | |
| 358 | if let (Ok(app_writer), Ok(ai_writer), Ok(flashgrep_writer)) = |
| 359 | (app_writer, ai_writer, flashgrep_writer) |
| 360 | { |
| 361 | tracing_subscriber::registry() |
| 362 | .with(build_file_layer(app_writer, is_app_target, log_level)) |
| 363 | .with(build_file_layer(ai_writer, is_ai_target, log_level)) |
| 364 | .with(build_file_layer( |
| 365 | flashgrep_writer, |
| 366 | is_flashgrep_target, |
| 367 | log_level, |
| 368 | )) |
| 369 | .init(); |
| 370 | } else { |
| 371 | tracing_subscriber::fmt() |
| 372 | .with_max_level(log_level) |
| 373 | .with_target(true) |
| 374 | .with_writer(std::io::stderr) |
| 375 | .with_ansi(false) |
| 376 | .init(); |
| 377 | } |
| 378 | |
| 379 | paths |
| 380 | } |
| 381 | |
| 382 | pub fn init_file_logging(log_level: tracing::Level) -> CliLogPaths { |
| 383 | let logs_root = resolve_logs_root(); |
no test coverage detected