Esistono degli standard per etichettare i messaggi stdout / stderr?

3

Sto facendo un'applicazione per console e nel tempo ho sviluppato i miei strumenti e le mie pratiche per l'output di testo; un processo che continua ad evolversi.

Ad esempio, in questi giorni ho 4 tipi principali di messaggi formattati all'incirca come i seguenti:

bold(   red("  Error: ")) + msg << endl << bold(blue("  Value: ")) + invert(val);
bold( green("Success: ")) + msg << endl << bold(blue("  Value: ")) + invert(val);
bold(orange("Warning: ")) + msg << endl << bold(blue("  Value: ")) + invert(val);
bold(yellow("Process: ")) + msg << endl << bold(blue("  Value: ")) + invert(val);

Per me ha senso, tuttavia sono preoccupato di poter reinventare la ruota e preferirei seguire uno standard se ne esiste uno, specialmente se provenisse da un progetto come:

  • Sviluppo del kernel Linux
  • Progetto Qt
  • Manuali o libri di testo consigliati C / C ++
  • La raccomandazione di Bjourne
  • Qualunque cosa abbia a che fare con C davvero.

Gli standard di codifica o le migliori pratiche per i grandi progetti come questo? Ce ne sono altri che non rientrano in questo ambito ma che vale la pena menzionare?

Grazie.

    
posta Akiva 26.03.2017 - 03:55
fonte

1 risposta

6

Stai reinventando la ruota, in diversi modi.

In primo luogo, sembra che tu stia confondendo l'output del programma e la registrazione. Tradizionalmente, l'output del programma è un testo non ordinato che va a StdOut, mentre i messaggi di registrazione e di errore vengono inviati a StdErr (Google per "la filosofia UNIX" o go su Wikipedia per un riassunto .

Le esigenze di registrazione più complesse sono tipicamente gestite in Linux utilizzando la funzione syslog (e ancora, Wikipedia per un sommario).

Il vantaggio dell'utilizzo di una funzionalità di registrazione effettiva è che i messaggi di registro possono essere indirizzati a più origini e classificati in base a più fattori.

Esistono anche alternative di terze parti. Nel mondo Java, Log4J rimane popolare, e c'è una porta su C . Uno dei vantaggi per i framework di terze parti è la disponibilità multipiattaforma e anche la coerenza (se hai familiarità con Log4C, dovresti essere in grado di passare a Log4J o Log4Net o Log4JS con poco sforzo).

    
risposta data 26.03.2017 - 23:14
fonte