Ho un'applicazione che deve registrare ogni transazione. Ogni messaggio di registro viene scaricato perché dobbiamo avere una registrazione di ciò che è accaduto che ha portato a un arresto anomalo. I miei colleghi e io eravamo curiosi di sapere come ottenere gli effetti sulle prestazioni del buffering, garantendo al contempo che il messaggio di log avesse lasciato il processo.
Quello che ci è venuto in mente è:
- creare un FIFO su cui l'applicazione può scrivere e
- reindirizzare il contenuto di quel FIFO su un file normale tramite
cat
.
Cioè, ciò che era normalmente:
app --logfile logfile.txt
è ora:
mkfifo logfifo
cat logfifo &> logfile.txt &
app --logfile logfifo
Ci sono problemi a questo approccio? Ha funzionato quando lo abbiamo testato, ma vogliamo assolutamente assicurarci che i messaggi trovino la strada per il file di reindirizzamento anche se l'applicazione originale si arresta in modo anomalo.
(Non abbiamo il codice sorgente per l'applicazione, quindi le soluzioni di programmazione sono fuori questione. Inoltre, l'applicazione non scriverà stdout
, quindi eseguire il piping direttamente a un comando diverso è fuori questione. Quindi syslog
non è possibile .)
Aggiornamento: ho aggiunto una taglia. La risposta accettata non coinvolgerà logger
per il semplice motivo che nonlogger
è quello che ho chiesto. Come afferma la domanda originale, sto solo cercando dei trucchi per usare un FIFO.