[pve-devel] [PATCH installer v2 2/6] auto: log non-json low-level messages into separate file
Christoph Heiss
c.heiss at proxmox.com
Mon Nov 25 12:27:16 CET 2024
Same as the TUI does, as introduced in [0].
[0] 22de6e5 ("tui: install_progress: write low-level non-JSON messages to separate file")
Signed-off-by: Christoph Heiss <c.heiss at proxmox.com>
---
Changes v1 -> v2:
* no changes
.../src/bin/proxmox-auto-installer.rs | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs b/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs
index 151694f..2143838 100644
--- a/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs
+++ b/proxmox-auto-installer/src/bin/proxmox-auto-installer.rs
@@ -1,7 +1,8 @@
use anyhow::{bail, format_err, Result};
use log::{error, info, LevelFilter};
use std::{
- env, fs,
+ env,
+ fs::{self, File},
io::{BufRead, BufReader, Write},
path::PathBuf,
process::ExitCode,
@@ -169,15 +170,29 @@ fn run_installation(
.map_err(|err| format_err!("failed to serialize install config: {err}"))?;
writeln!(writer).map_err(|err| format_err!("failed to write install config: {err}"))?;
+ let mut lowlevel_log = File::create("/tmp/install-low-level.log")
+ .map_err(|err| format_err!("failed to open low-level installer logfile: {err}"))?;
+
for line in reader.lines() {
let line = match line {
Ok(line) => line,
Err(_) => break,
};
+
+ // The low-level installer also spews the output of any command it runs on its
+ // stdout. Use a very simple heuricstic to determine whether it is actually JSON
+ // or not.
+ if !line.starts_with('{') || !line.ends_with('}') {
+ let _ = writeln!(lowlevel_log, "{}", line);
+ continue;
+ }
+
let msg = match serde_json::from_str::<LowLevelMessage>(&line) {
Ok(msg) => msg,
- Err(_) => {
+ Err(err) => {
// Not a fatal error, so don't abort the installation by returning
+ eprintln!("low-level installer: error while parsing message: '{err}'");
+ eprintln!(" original message was: '{line}'");
continue;
}
};
--
2.47.0
More information about the pve-devel
mailing list