Add --no-buffering flag for the file logging.

This commit is contained in:
vsrs
2021-01-24 17:06:55 +03:00
parent 2c735ed734
commit 43fabfbe36
3 changed files with 21 additions and 15 deletions

View File

@@ -2,10 +2,7 @@
//! filter syntax. Amusingly, there's no crates.io crate that can do this and
//! only this.
use std::{
fs::File,
io::{BufWriter, Write},
};
use std::{borrow::BorrowMut, fs::File, io::{BufWriter, Write}};
use env_logger::filter::{Builder, Filter};
use log::{Log, Metadata, Record};
@@ -14,10 +11,11 @@ use parking_lot::Mutex;
pub(crate) struct Logger {
filter: Filter,
file: Option<Mutex<BufWriter<File>>>,
no_buffering: bool,
}
impl Logger {
pub(crate) fn new(log_file: Option<File>, filter: Option<&str>) -> Logger {
pub(crate) fn new(log_file: Option<File>, no_buffering: bool, filter: Option<&str>) -> Logger {
let filter = {
let mut builder = Builder::new();
if let Some(filter) = filter {
@@ -28,7 +26,7 @@ impl Logger {
let file = log_file.map(|it| Mutex::new(BufWriter::new(it)));
Logger { filter, file }
Logger { filter, file, no_buffering }
}
pub(crate) fn install(self) {
@@ -55,6 +53,10 @@ impl Log for Logger {
record.module_path().unwrap_or_default(),
record.args(),
);
if self.no_buffering {
w.lock().borrow_mut().flush().unwrap();
}
}
None => eprintln!(
"[{} {}] {}",