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?