refactor: improve console handling & logs, scoped mutex lock, fix linux unused imports

This commit is contained in:
Ryan Walters
2025-09-02 09:07:08 -05:00
parent 39a5df1ffd
commit 055dc85f2b
5 changed files with 42 additions and 24 deletions

View File

@@ -2,7 +2,7 @@
use crate::platform::buffered_writer::BufferedWriter;
use std::io;
use tracing::Level;
use tracing::{debug, Level};
use tracing_error::ErrorLayer;
use tracing_subscriber::fmt::MakeWriter;
use tracing_subscriber::layer::SubscriberExt;
@@ -16,17 +16,24 @@ pub struct SwitchableWriter {
impl SwitchableWriter {
pub fn switch_to_direct_mode(&self) -> io::Result<()> {
// Get buffer size before flushing for debug logging
let buffer_size = self.buffered_writer.buffer_size();
let buffer_size = {
// Acquire the lock
let mut mode = self.direct_mode.lock();
// First flush any buffered content
self.buffered_writer.flush_to(io::stdout())?;
// Get buffer size before flushing for debug logging
let buffer_size = self.buffered_writer.buffer_size();
// Switch to direct mode
*self.direct_mode.lock() = true;
// Flush any buffered content
self.buffered_writer.flush_to(io::stdout())?;
// Switch to direct mode (and drop the lock)
*mode = true;
buffer_size
};
// Log how much was buffered (this will now go directly to stdout)
tracing::debug!("Flushed {} bytes of buffered logs to console", buffer_size);
debug!("Flushed {buffer_size:?} bytes of buffered logs to console");
Ok(())
}