Add stderr flush
This commit is contained in:
parent
43fabfbe36
commit
98d7512e93
@ -49,7 +49,7 @@ FLAGS:
|
||||
-q, --quiet Set verbosity
|
||||
|
||||
--log-file <PATH> Log to the specified file instead of stderr
|
||||
--no-buffering Flush log records to the file immediatly
|
||||
--no-buffering Flush log records to the file immediately
|
||||
|
||||
ENVIRONMENTAL VARIABLES:
|
||||
RA_LOG Set log filter in env_logger format
|
||||
|
@ -2,7 +2,10 @@
|
||||
//! filter syntax. Amusingly, there's no crates.io crate that can do this and
|
||||
//! only this.
|
||||
|
||||
use std::{borrow::BorrowMut, fs::File, io::{BufWriter, Write}};
|
||||
use std::{
|
||||
fs::File,
|
||||
io::{self, BufWriter, Write},
|
||||
};
|
||||
|
||||
use env_logger::filter::{Builder, Filter};
|
||||
use log::{Log, Metadata, Record};
|
||||
@ -53,10 +56,6 @@ impl Log for Logger {
|
||||
record.module_path().unwrap_or_default(),
|
||||
record.args(),
|
||||
);
|
||||
|
||||
if self.no_buffering {
|
||||
w.lock().borrow_mut().flush().unwrap();
|
||||
}
|
||||
}
|
||||
None => eprintln!(
|
||||
"[{} {}] {}",
|
||||
@ -65,11 +64,20 @@ impl Log for Logger {
|
||||
record.args(),
|
||||
),
|
||||
}
|
||||
|
||||
if self.no_buffering {
|
||||
self.flush();
|
||||
}
|
||||
}
|
||||
|
||||
fn flush(&self) {
|
||||
if let Some(w) = &self.file {
|
||||
let _ = w.lock().flush();
|
||||
match &self.file {
|
||||
Some(w) => {
|
||||
let _ = w.lock().flush();
|
||||
}
|
||||
None => {
|
||||
let _ = io::stderr().flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user