mirror of
https://git.proxmox.com/git/pve-installer
synced 2025-04-28 16:34:37 +00:00
auto: log non-json low-level messages into separate file
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@proxmox.com>
This commit is contained in:
parent
d564919315
commit
a1985ab9ab
@ -1,7 +1,8 @@
|
|||||||
use anyhow::{bail, format_err, Result};
|
use anyhow::{bail, format_err, Result};
|
||||||
use log::{error, info, LevelFilter};
|
use log::{error, info, LevelFilter};
|
||||||
use std::{
|
use std::{
|
||||||
env, fs,
|
env,
|
||||||
|
fs::{self, File},
|
||||||
io::{BufRead, BufReader, Write},
|
io::{BufRead, BufReader, Write},
|
||||||
path::PathBuf,
|
path::PathBuf,
|
||||||
process::ExitCode,
|
process::ExitCode,
|
||||||
@ -169,15 +170,29 @@ fn run_installation(
|
|||||||
.map_err(|err| format_err!("failed to serialize install config: {err}"))?;
|
.map_err(|err| format_err!("failed to serialize install config: {err}"))?;
|
||||||
writeln!(writer).map_err(|err| format_err!("failed to write 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() {
|
for line in reader.lines() {
|
||||||
let line = match line {
|
let line = match line {
|
||||||
Ok(line) => line,
|
Ok(line) => line,
|
||||||
Err(_) => break,
|
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) {
|
let msg = match serde_json::from_str::<LowLevelMessage>(&line) {
|
||||||
Ok(msg) => msg,
|
Ok(msg) => msg,
|
||||||
Err(_) => {
|
Err(err) => {
|
||||||
// Not a fatal error, so don't abort the installation by returning
|
// 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;
|
continue;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user