Alternativa alla stampa delle informazioni di debug su stdout \ stderr [duplicato]

0

Attualmente ho un'applicazione a esecuzione prolungata su un ambiente Linux incorporato e tutti i messaggi di debug sono attualmente in uscita sullo standard output usando printf. Questo non è l'ideale per gli utenti speciali che hanno effettivamente bisogno di usare il terminale.

Esiste un modo per stampare un file pseudo-dispositivo, uno stderr personalizzato o un qualche tipo di stream sganciato in modo che un flusso live possa essere visualizzato se gli utenti decidono di aprirlo in un visualizzatore di file o c'è un modo migliore fare questo?

Ho pensato di loggare tutti i messaggi di debug in un file, ma voglio evitare un problema se l'applicazione viene lasciata in esecuzione per giorni e giorni e il file di log viene lasciato per riempire fino a delle dimensioni ingestibili.

    
posta user3196468 03.11.2014 - 04:16
fonte

3 risposte

2

Bene, puoi:

  • Usa la rotazione del registro. Dopo un determinato orario, chiudi il registro, spostalo e aprine uno nuovo.

  • Accedere a un socket, UDP o dominio unix. In questo caso il messaggio verrà dimenticato se non hai alcun listener connesso.

  • Inserisci un leggero daemon syslog e usa syslog (3) . Qui puoi configurare il file con rotazione, socket e alcune altre opzioni.

  • Utilizza qualche altro framework che implementa già opzioni come questa.

risposta data 03.11.2014 - 15:34
fonte
3

La solita soluzione è quella di accedere a un file e di utilizzare la rotazione del registro . Puoi implementare la rotazione da solo o utilizzare un demone come logrotate .

    
risposta data 03.11.2014 - 15:00
fonte
1

Supervisor è un popolare gestore di processi che dispone di numerose funzionalità per acquisire e archiviare l'output da stdout e stderr per i processi gestiti.

Andando verso qualcosa che è più accessibile, è possibile utilizzare Sentry . È open source, anche se non ci sono client C ++ di cui sono a conoscenza, ma si riduce al trasporto di dati JSON su HTTP.

    
risposta data 03.11.2014 - 15:59
fonte

Leggi altre domande sui tag