diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-05-11 20:46:53 +0200 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-05-11 20:46:53 +0200 |
commit | 3265381289b25459f92c47a2832d8d2d00e6f83c (patch) | |
tree | 880b23ed83d0620ace6b612c9847a63a48ccae3e | |
parent | 2b1fdc0de02748a9a4cf021c3ca3f7f18e6b4440 (diff) |
log stderr too
-rw-r--r-- | src/main.rs | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs index 9fdd06a..ab6696f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -57,17 +57,32 @@ fn log(child: Child, service_name: String) -> anyhow::Result<()> { let mut stdout = StandardStream::stdout(ColorChoice::Always); let mut file = File::create(Path::new("/data").join(service_name.clone() + ".log"))?; let mut r = BufReader::new(child.stdout.expect("no child stdout")); + let mut r_err = BufReader::new(child.stderr.expect("no child stderr")); loop { let mut buf = String::new(); r.read_line(&mut buf)?; - let buf = format!("[{}] {}", service_name, buf); + if !buf.is_empty() { + let buf = format!("[{}] {}", service_name, buf); - stdout.set_color(ColorSpec::new().set_fg(Some(Color::White)))?; - write!(&mut stdout, "{}", buf)?; + stdout.set_color(ColorSpec::new().set_fg(Some(Color::White)))?; + write!(&mut stdout, "{}", buf)?; - file.write_all(buf.as_bytes())?; + file.write_all(buf.as_bytes())?; + } + + let mut buf_err = String::new(); + r_err.read_line(&mut buf_err)?; + + if !buf_err.is_empty() { + let buf_err = format!("[{}] {}", service_name, buf_err); + + stdout.set_color(ColorSpec::new().set_fg(Some(Color::White)))?; + write!(&mut stdout, "{}", buf_err)?; + + file.write_all(buf_err.as_bytes())?; + } } } |