Sto lavorando con un sistema legacy che non è male, ma ho pensato di apportarvi alcuni miglioramenti, e volevo sollecitare il vostro feedback per aiutarmi a prendere buone decisioni. La piattaforma è Linix (diverse versioni di esso).
Il sistema ruota attorno all'esecuzione [a volte lunghi] di "lavori" - programmi a riga di comando. I lavori di solito riescono, ma a volte possono fallire, e quando lo fanno è molto importante diagnosticare cosa è andato storto in modo efficiente, e correggere i problemi sottostanti (se ce ne sono) e riavviare un lavoro.
Per questo motivo non utilizziamo software di terze parti perché abbiamo bisogno di un controllo completo sul processo. In questo momento le informazioni su un lavoro vengono salvate su disco come file: c'è un file per stdin, un file che memorizza il codice di uscita, un file per stdout e stderr combinato, e so anche esattamente come è stato avviato il processo - che cosa era il nome del comando e quali erano gli argomenti.
Ora ... pensavo di dividere le uscite stdout e stderr in file diversi, ma poi mi sono reso conto che quando sono combinati insieme, si può vedere l'ordine cronologico dei messaggi, eccetto che ora prende un giudizio umano per dire quale era output e che contiene gli errori. Portandolo ad un estremo estremo - perché non lanciare stdin nel mix? Potrebbe essere importante, a scopo di debug, quale sia stata la linea di input specifica che ha causato un errore. Idealmente il messaggio di errore sarebbe sufficientemente descrittivo da fornire un sacco di contesto, ma questo non sempre accade.
Sto cercando un modo pulito per organizzare questi dati in modo che la logica automatizzata possa essere utilizzata per aiutare gli esseri umani con la diagnostica degli errori. Con molti lavori che eseguono questi errori, accadono piuttosto spesso. Un esempio di qualcosa che potrei voler interrogare - quali sono state le ultime 20 righe di input che hanno preceduto la prima riga in stderr? Suppongo che l'esatta marca temporale possa essere utile, ma non così importante. Inoltre, poiché si utilizza un modulo di registrazione, spesso le righe di output contengono già timestamp, ma non sempre: non ho scritto ogni bit di questo sistema legacy. Posso apportare modifiche ad esso; Non voglio riscriverlo.
Potresti proporre un buon modo per massaggiare questi flussi (aggiungere forse una sorta di metadati) per organizzare le cose in modo pulito? Il requisito è che non si debba utilizzare molta potenza di calcolo o spazio su disco / ram. Sospetto che il mio problema non sia unico. Grazie in anticipo.