Come implementare il sistema di registrazione conforme al formato?

1

Abbiamo un sistema che genera molti registri e dobbiamo in qualche modo mantenere il flusso di lavoro di registrazione in un progetto.

Il requisito "strict" (assumiamo che sia rigoroso) è che dovrebbe esserci un documento che descrive il formato per ciascun messaggio e ciascun messaggio dovrebbe essere conforme a tale formato.

(Per formato intendo BNF -come cose come 'some text {one|two} [three]' ecc.

È anche auspicabile visualizzare i messaggi di log stessi nel codice, non alcuni ID che si riferiscono ad essi in alcuni "elenchi di messaggi".

Attualmente lo stato è che esiste un grande file con oltre 1000 messaggi con ID, severità e azioni utente descritte per ciascuno di essi, e nel codice principale ci stiamo solo sforzando di mantenere i messaggi di log esattamente nel formato che abbiamo specificato (e naturalmente fallendo in questo).

Ovviamente non è un'opzione valida per analizzare il codice sorgente durante la compilazione e cercare di garantire il formato del messaggio in questo modo (i messaggi possono essere scritti non letteralmente ecc.).

Quindi, come implementare un sistema di registrazione conforme al formato?

So che sembra un po 'come un tipo di suggerimento di qualche tipo di strumento, ma continuo a pensare che si tratti più di approcci concettuali al problema (eppure sarei davvero lieto di vedere un esempio di tale sistemi! :) lingua non importa).

    
posta Laiv 02.02.2018 - 05:29
fonte

1 risposta

2

Il tuo primo e più importante passo è sviluppare un'API. Crea una libreria che, quando chiamata, registrerà il messaggio. Sì, è tutto per il primo passo. La ragione di ciò è di coordinare la registrazione in un luogo collettivo per lo sviluppo futuro. Se il chiamante sta fornendo il proprio formato, offre un secondo metodo per chiamare che è deprecato dall'inizio, ma non aggiunge formattazione.

Una volta che hai fatto questo passaggio (e se hai molti progetti, non è un piccolo passo), allora puoi caricare una configurazione e usarla per determinare il formato corretto delle voci di registrazione. Consiglio vivamente di avere un mezzo per nascondere i livelli di registrazione in modo da poter filtrare i messaggi in base alla gravità. Meglio ancora se puoi filtrare spazi dei nomi o pacchetti specifici.

Ogni progetto / chiamante rimuove il suo formato dal messaggio e chiama i metodi di registrazione standard che aggiungono automaticamente il formato desiderato.

Idealmente il tuo formato di registrazione dovrebbe essere interamente configurabile per l'utilizzo futuro. Non conosco la lingua che stai utilizzando (non hai specificato), ma esistono già un certo numero di librerie che eseguono questa funzionalità, ad esempio Log4J in Java. Se esiste una tale libreria, probabilmente starai meglio a usarla. Tuttavia, si consiglia comunque di creare la propria API in modo che le modifiche future non debbano essere eseguite su tutta la linea ma solo in un unico punto.

    
risposta data 02.02.2018 - 08:43
fonte