Change summary
crates/zed/src/reliability.rs | 1 +
crates/zlog/src/sink.rs | 13 ++++++++++++-
crates/zlog/src/zlog.rs | 2 +-
3 files changed, 14 insertions(+), 2 deletions(-)
Detailed changes
@@ -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() {
@@ -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);
@@ -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;