]> git.lizzy.rs Git - rust.git/commitdiff
Add stderr flush
authorvsrs <vit@conrlab.com>
Sun, 24 Jan 2021 14:41:02 +0000 (17:41 +0300)
committervsrs <vit@conrlab.com>
Mon, 25 Jan 2021 14:46:03 +0000 (17:46 +0300)
crates/rust-analyzer/src/bin/args.rs
crates/rust-analyzer/src/bin/logger.rs

index 4ec755769322953a3f9bd35ace816ab1eaa9ca24..32d7836ff546f5d011bd4a76805c2a831f513783 100644 (file)
@@ -49,7 +49,7 @@ pub(crate) enum Command {
     -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
index 4ea4ffafb66cad7267f9efb6434bb7e55f248570..3e5cc7acfaaa468c0d955e68cc197a9979c54f81 100644 (file)
@@ -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 @@ fn log(&self, record: &Record) {
                     record.module_path().unwrap_or_default(),
                     record.args(),
                 );
-
-                if self.no_buffering {
-                    w.lock().borrow_mut().flush().unwrap();
-                }
             }
             None => eprintln!(
                 "[{} {}] {}",
@@ -65,11 +64,20 @@ fn log(&self, record: &Record) {
                 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();
+            }
         }
     }
 }