zlog: Ensure log file is flushed (#28923)

Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...
This commit is contained in:
Ben Kunkle 2025-04-16 19:30:23 -04:00 committed by GitHub
parent 9ea8a9a1d3
commit 63b4b60b79
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 14 additions and 2 deletions

View File

@ -130,6 +130,7 @@ pub fn init_panic_hook(
if let Some(panic_data_json) = serde_json::to_string_pretty(&panic_data).log_err() {
log::error!("{}", panic_data_json);
}
zlog::flush();
if !is_pty {
if let Some(panic_data_json) = serde_json::to_string(&panic_data).log_err() {

View File

@ -152,7 +152,18 @@ pub fn submit(record: Record) {
}
pub fn flush() {
_ = std::io::stdout().lock().flush();
if unsafe { ENABLED_SINKS_STDOUT } {
_ = std::io::stdout().lock().flush();
}
let mut file = ENABLED_SINKS_FILE.lock().unwrap_or_else(|handle| {
ENABLED_SINKS_FILE.clear_poison();
handle.into_inner()
});
if let Some(file) = file.as_mut() {
if let Err(err) = file.flush() {
eprintln!("Failed to flush log file: {}", err);
}
}
}
struct ScopeFmt(Scope);

View File

@ -5,7 +5,7 @@ mod env_config;
pub mod filter;
pub mod sink;
pub use sink::{init_output_file, init_output_stdout};
pub use sink::{flush, init_output_file, init_output_stdout};
pub const SCOPE_DEPTH_MAX: usize = 4;