[.net] Quale registro è buono per la tua app?


Answers

Essendo un amministratore, apprezzo molto le app che si collegano al registro eventi (preferibilmente il loro proprio, altrimenti il ​​registro dell'applicazione) per tutti i log di registrazione ma di traccia. Accedendo al registro eventi, è molto più probabile che gli avvisi o gli errori vengano rilevati e indirizzati dallo staff dell'amministratore prima che diventino un problema grave (se si tratta di un problema a cui possono rivolgersi), o consente loro di entrare in contatto con gli sviluppatori, che possono utilizzare i log di traccia per risolvere ulteriormente il problema.

Il mio più grande punto dolente nel supportare un'applicazione .NET personalizzata al momento è che ci sono 8 diverse applicazioni (alcune app per console, alcune winform e qualche web) dello stesso fornitore. Nessuno di essi accede al registro eventi, tutti hanno i propri file di registro personalizzati. Ma per tutte le winform e le app console, mantengono il file aperto mentre sono in esecuzione, quindi non posso monitorarlo per problemi. Inoltre, i log sono tutti scritti in modo leggermente diverso, quindi dovrei analizzarli in modo un po 'diverso per ottenere informazioni utili.

Questo mi obbliga a monitorare l'aspetto di un'applicazione (risponde alle porte su cui è attivo, il processo sta diventando troppo alto, ecc.), Piuttosto che lo stato dell'applicazione.

Per favore, considera le persone che mantengono la tua applicazione dopo che è stata distribuita e fornisci la registrazione che possono usare. Grazie!

Question

Quindi abbiamo discusso della registrazione nel mio posto di lavoro e mi chiedevo se alcuni di voi ragazzi qui potevano darmi qualche idea dei vostri approcci?

In genere, il nostro scenario è, in realtà nessuna registrazione, e soprattutto app .NET, client Winform / WPF che comunicano attraverso i servizi Web o indirizzano a un db.

Quindi, la vera domanda è, dove o cosa registreresti? Al momento abbiamo utenti che segnalano messaggi di errore - quindi suppongo che avvio / arresto del registro, eccezioni ...

Lo porti alle chiamate ai servizi web o db? Pagina carica?

Come fai a capire cosa stava cercando di fare l'utente in quel momento?

È meglio andare fino in fondo e registrare tutto su più tentativi / giorni, oppure registrare solo ciò che è necessario (dato che l'hdd è economico).

Immagino che siano alcune domande, ma volevo avere un'idea più precisa di quale sia la pratica attuale nei negozi più grandi!




È meglio andare fino in fondo e registrare tutto su più tentativi / giorni, oppure registrare solo ciò che è necessario (dato che l'hdd è economico).

Il fatto che gli hard disk siano economici non è una buona ragione per registrare verbosamente tutto il possibile, per alcune ragioni. Per esempio, con un'applicazione molto impegnata, non si vuole rallentare e legare le scritture di dischi registri (gli hard disk sono piuttosto lenti). Il secondo punto, e il più importante - c'è davvero molto poco da guadagnare da terabyte di log. Per lo sviluppo, possono essere utili, ma non è necessario tenerli più di qualche minuto ..

Alcuni logging sono ovviamente utili, poiché avere livelli diversi è l'unico modo per farlo - ad esempio, debug () info () viene registrato solo se richiesto (in una configurazione, o riga di comando), quindi forse warning () e error () viene inviato a un file di log

Per la maggior parte delle cose che ho scritto (script piccoli) generalmente ho solo una funzione debug (), che controlla se --verbose è impostato, e stampa il messaggio .. In questo modo posso spingere il debug ("qualche valore:% s "% (avar)) quando necessario, e non devono preoccuparsi di tornare indietro e rimuovere le dichiarazioni di debug di print () ovunque.

Per le applicazioni Web, generalmente utilizzo solo i log del server Web per le statistiche e il log degli errori. Io uso cose come il log di mod_rewrite quando necessario, ma sarebbe stupido lasciare questo abilitato oltre lo sviluppo (dato che crea molte molte linee su ogni richiesta di pagina)

Suppongo che dipenda dall'applicazione stessa, ma generalmente, per le grandi applicazioni si usano più livelli di log che possono essere attivati ​​quando necessario. Per oggetti più piccoli, un flag --verbose o equivalente, per applicazioni Web, errori di registro e accessi al registro (a un punto).

Fondamentalmente, in "produzione" registra solo le informazioni che puoi usare, nel registro di sviluppo tutto ciò che è possibile è necessario per risolvere i problemi.




Come risposta rapida, direi di creare una serie di categorie e avere livelli di registrazione commutabili, ad esempio informazioni, avvertenze, errori, criticità, ecc.

Quindi semplificare l'impostazione del livello di registrazione per ottimizzare il livello di dettaglio necessario. In genere, imposta il livello di registrazione in un file di configurazione e ferma e riavvia l'app.

Vorrei anche rendere noti agli sviluppatori qual è il significato per ciascuno dei livelli.

modifica: vorrei anche impostare un sistema per ruotare, comprimere e archiviare i file di registro su base regolare, magari di notte.