Uso la registrazione abbastanza spesso, soprattutto per le applicazioni che dipendono strongmente dalle risorse non gestite di cui ho un controllo minore (ad esempio l'I / O di rete) e per le applicazioni che è difficile eseguire correttamente il debug da Visual Studio. Ci sono anche cose che potresti voler accedere all'ambiente di produzione che non puoi registrare solo attraverso il debug, come attività dell'utente, occorrenze / eccezioni impreviste, ecc.
Ad esempio, sul lavoro di recente ho scritto un'applicazione per il trasferimento dei dati. Ho dovuto trovare un modo per trasferire i dati da un server esterno che controllo a un server all'interno di una rete governativa che controllo. Grandi quantità di dati devono essere trasferiti ogni giorno. Ho esposto i dati esterni sviluppando alcuni servizi Web per il server esterno. Quindi ho scritto un'applicazione che è pianificata per essere eseguita periodicamente sul server interno. Il server interno passa le informazioni di autenticazione e le richieste di dati specifici al server esterno tramite le intestazioni SOAP. Il server esterno restituisce quindi i dati serializzati su HTTPS tramite XML. Perché c'è una grande quantità di dati coinvolti qui, il fatto che abbiamo un obbligo contrattuale di mantenere i dati aggiornati e disponibili sulla rete governativa, e per il fatto che sto facendo affidamento su reti ISP che ho poco da nessun controllo, ho bisogno di essere in grado di registrare ciò che accade con i trasferimenti di dati in modo che io possa risolvere i problemi. Il software di trasferimento dati conserva i propri registri e registra anche gli eventi sul visualizzatore eventi per il server. Quindi espongo questi dati tramite un sito Web intranet in modo da poter controllare rapidamente lo stato e la salute del sistema di trasferimento dati e del database interno.
Uso anche la registrazione per scopi di sicurezza nelle mie applicazioni di produzione. Alcune delle mie app Web registrano l'attività degli utenti, ad esempio, e la maggior parte delle mie app web registrerà eventuali eccezioni incontrate in un database SQL Server in modo da poter rilevare e correggere rapidamente i bug.
Un altro scenario in cui ho utilizzato di recente la registrazione era quando avevo bisogno di installare rapidamente alcune routine di gestione degli eventi sul nostro server SharePoint. Non ho avuto il tempo di creare un ambiente virtualizzato adatto per sharepoint o un server di test. Ho aggiunto SharePoint.dll a un progetto e ho scritto il codice, l'ho letto meticolosamente e verificato che fosse compilato, ma non avevo l'ambiente adatto per eseguire effettivamente il codice e collegarlo a un debugger. Quindi, mentre stavo sviluppando l'applicazione, installavo periodicamente gli assembly in GAC sul server e li registravo con sharepoint utilizzando un'utilità interna che ho scritto. Ho avuto i gestori di eventi scrivere un sacco di informazioni sul visualizzatore di eventi sul server in modo che potessi vedere che si sono registrati con SharePoint e funzionavano correttamente.
Penso di aver lavorato su alcuni progetti di InfoPath prima di dove un paio di loro non potevano essere collegati a un debuger per qualsiasi motivo. Penso che in quel caso ho semplicemente avvolto le direttive del pre-processore di DEBUG attorno a certe parti del codice mentre eseguivo il debug e la risoluzione dei problemi, in modo che si aprissero le messagebox per farmi sapere cosa stava succedendo. Sono sicuro che l'abbiamo già fatto prima. Questo è fondamentalmente il modo in cui eseguo il debug di javascript (con le caselle di avviso che commenterò più tardi, lol).
Per quanto riguarda le pratiche comuni ... una cosa che faccio sempre in tutte le mie classi .NET è l'override di ToString (). La sostituzione di My ToString () in genere restituisce tutti i dati importanti dello stato per il mio tipo (proprietà e campi membro, ecc.). Questo è utile per molte ragioni, e la registrazione è certamente una di queste. Se stai cercando di rintracciare un problema o di tenere traccia delle cose nell'ambiente di produzione, puoi sfruttare molto ToString () per registrare una stampa di uno stato di tipi in un dato momento.
Puoi utilizzare la classe EventLog in System.Diagnostics se sei uno sviluppatore .NET per scrivere direttamente nel registro eventi del sistema se il tuo codice ha le autorizzazioni appropriate. È inoltre possibile utilizzare System.Diagnostics.Debug e System.Diagnostics.Trace per scopi di registrazione. Trace è utile perché puoi scrivere direttamente nella finestra di output in Visual Studio che va di pari passo con il debugging. È inoltre possibile creare contatori delle prestazioni personalizzati per la propria applicazione da utilizzare con lo snap-in MMC Performance Monitor in Windows. In riferimento alla tua domanda, puoi vedere che Microsoft considera la registrazione come un requisito comune per un determinato peice di software, infatti molte, se non la maggior parte delle loro applicazioni, impiegano qualche tipo di registrazione.
Quindi per rispondere alla tua domanda, sì, la registrazione può essere molto utile ed è in effetti molto comune.