Ho letto molto sul tracciamento e la registrazione, cercando di trovare qualche regola d'oro per le migliori pratiche in materia, ma non ce n'è alcuna. La gente dice che i bravi programmatori producono una buona traccia, ma la mettono in questo modo e deve provenire dall'esperienza.
Ho letto anche domande simili qui e tramite Internet e non sono esattamente la stessa cosa che sto chiedendo o non ho una risposta soddisfacente, forse perché le domande mancano di dettagli.
Quindi, la gente dice che la traccia dovrebbe replicare l'esperienza del debug dell'applicazione nei casi in cui non è possibile allegare un debugger. Dovrebbe fornire un contesto sufficiente in modo che tu possa vedere quale percorso è preso in ogni punto di controllo nell'applicazione.
Andando più a fondo, puoi anche distinguere tra la traccia e la registrazione degli eventi, in quanto "la registrazione degli eventi è diversa dalla traccia in quanto cattura gli stati principali piuttosto che il flusso di controllo dettagliato".
Ora, diciamo che voglio eseguire il mio tracciamento e la registrazione utilizzando solo le classi .NET standard, quelle nello spazio dei nomi System.Diagnostics
. Ho capito che la classe TraceSource è migliore per il lavoro rispetto alla classe Trace statica, perché voglio differenziare i livelli di traccia e utilizzare la classe TraceSource che posso passare in un parametro che informa il tipo di evento, mentre uso la classe Trace che devo usare Trace.WriteLineIf
e poi verifica cose come SourceSwitch.TraceInformation
e SourceSwitch.TraceErrors
, e non ha nemmeno proprietà come TraceVerbose
o TraceStart
.
Considerando tutto ciò, considereresti una buona pratica come segue:
- Tracciare un evento "Start" all'avvio a metodo, che dovrebbe rappresentare a singola operazione logica o a pipeline, insieme a una stringa rappresentazione del parametro valori passati al metodo.
- Traccia un evento "Informazioni" quando inserire un elemento nel database.
- Traccia un evento "Informazioni" quando prendendo un percorso o l'altro in un importante if / else statement.
- Traccia un "Critico" o "Errore" in a blocco di cattura a seconda che si tratti è un errore recuperabile.
- Traccia un evento "Stop" al termine l'esecuzione del metodo.
Inoltre, ti preghiamo di chiarire quando è meglio tracciare i tipi di eventi Verbose e Warning. Se hai esempi di codice con una traccia / registrazione piacevole e sei disposto a condividere, sarebbe eccellente.
Nota: ho trovato alcune buone informazioni qui, ma non sono ancora quello che sto cercando: link
Grazie in anticipo!