Ho scritto un semplice sistema di registrazione degli eventi, su cui scrivo con una funzione simile a:
void IIncidentLogic.ReportIncident(
string code,
string noun,
string hostname,
DateTimeOffset occurredAt)
Dove code deriva da un insieme di costanti come VOL_SIZE_INCREASE , noun sarebbe il percorso del volume, hostname il computer dove si è verificato e occurredAt quando è stato rilevato.
Poiché code è un valore noto, posso impostare automaticamente altre proprietà, come la gravità dell'evento, ad es. si tratta di un avviso o di un errore ? Uso anche code per interrogare un dizionario risorse per un messaggio di errore amichevole da mostrare agli utenti. In questo momento per questo esempio il messaggio di errore sarebbe A volume has increased in size , con noun aggiunto in modo impacciato al messaggio di errore.
Sto cercando di migliorare la leggibilità dei messaggi di errore, ad es. in questo scenario è qualcosa come The volume system (c:) on computer-name has increased in size from 100GB to 200GB .
Posso pensare a un paio di modi per farlo e mi sto chiedendo quale sia la pratica migliore.
Potrei pre-compilare il messaggio di errore e passare alla funzione di registrazione, memorizzandola nel proprio campo. Tuttavia, voglio forzare programmaticamente il messaggio affinché sia lo stesso, indipendentemente da dove viene generato. Un parametro string message è troppo aperto.
Quindi potrei registrare un dizionario di proprietà contro il rapporto, ad es. %codice%. Potrei ancora utilizzare le stringhe di risorse per generare i messaggi, ma formattarli, ad es. %codice% Ciò consente i8ln, che è un probabile requisito futuro. Ma ha la possibilità di rompere i dati legacy se qualche parte cambia, ad es. è richiesta una proprietà aggiuntiva.
E potrei fare entrambe le cose: usare le proprietà e la formattazione delle stringhe e memorizzare la stringa generata allo stesso tempo.
Potrei anche arrivare ad avere una classe per tipo di evento, o codice, con diversi parametri del costruttore, ma questo sicuramente sembra eccessivo.
O esiste un diverso schema stabilito per questo tipo di registrazione?