Differenza tra registro di interazione e registro "debug" o "applicazione"

0

Diciamo che ho bisogno di due log che escono dalla mia applicazione. Uno è per il debug di problemi e assicurandosi che l'applicazione funzioni correttamente e l'altra sia utilizzata per le statistiche degli utenti e l'analisi generale dell'intera interazione. Quest'ultimo dovrebbe includere informazioni sufficienti per individuare i colli di bottiglia e l'intero comportamento per utente.

Prima di tutto, come chiameresti ogni registro? Entrambi sono chiamati "log"? Uno è un registro di controllo? Qual è la terminologia professionale corretta per ciascuno?

In secondo luogo, come definiresti il registro delle statistiche?

Ad esempio, in Python, posso usare il modulo di registrazione per inserire casuali chiamate logging.info o logging.debug per il registro dell'applicazione, praticamente ovunque, e anche se alcune informazioni saranno perse, non è un problema.

Il registro delle statistiche però deve mantenere un identificativo di sessione univoco, ad esempio, in tutto il programma. Ciò causa problemi di progettazione e mi costringe a metterlo globalmente per thread o a passarlo praticamente ovunque, anche per moduli di utilità completamente disaccoppiati, e quindi rovinare i livelli architettonici. Potrei aver bisogno di dati grezzi dai socket per le statistiche, e potrei aver bisogno anche di dati ad alto livello dell'applicazione, distruggendo un bel caos da dove inserire le linee di log, dove inserire alcuni identificatori per richiesta come l'ID di sessione e se alcuni livelli o moduli disaccoppiati dovrebbero anche essere a conoscenza della richiesta (nel caso in cui ho bisogno di alcune statistiche interne che mostrano il funzionamento dei moduli disaccoppiati sotto ogni richiesta). Anche il log delle statistiche dovrebbe essere paragonabile a macchina ofc, quindi utilizzeresti il modulo python logging per questo?

In conclusione, c'è qualche idioma generale per progettare quei log?

    
posta Bharel 02.05.2018 - 09:39
fonte

2 risposte

2

Li chiamerei

  • myApplication.technical.log per problemi tecnici reali, errori ecc.
  • myApplication.statistics.log per le tue statistiche citate
  • myApplication.user.log per interazioni relative all'utente

e così via, a seconda dello scenario di utilizzo concreto.

    
risposta data 02.05.2018 - 15:59
fonte
0

Quello che stai descrivendo suona come i registri TRACE e DEBUG.

TRACE

In genere vengono utilizzati per registrare i percorsi di esecuzione attraverso il codice.

DEBUG

Questi log vengono utilizzati per acquisire informazioni più approfondite come il valore di alcune variabili. Tali informazioni possono essere utili come informazioni diagnostiche in caso di crash o errore.

Non ho molta familiarità con Python, ma qualsiasi framework di registrazione degno di questo nome fornirà supporto per questi elementi prontamente disponibili insieme ad altri livelli di registrazione come AVVISO, ERRORE e CRITICO.

Per raccogliere le statistiche da soli, è preferibile, a mio avviso, mantenere i log grezzi così come sono e poi avere un altro processo per aumentare il numero di ogni tipo di errore che si ottiene in un determinato intervallo di tempo. In teoria potrebbe entrare nel codice, ma questo in generale è ortogonale rispetto agli scopi dell'applicazione, quindi dovrebbe idealmente essere tenuto come un pezzo separato. I requisiti per tali statistiche tendono a cambiare nel tempo, quindi le informazioni di pre-aggregazione a scapito del mantenimento dei log non elaborati sono di rado vantaggiose per l'IMHO YMMV a lungo termine.

Per quanto riguarda un idioma generale, dovrebbe essere possibile aumentare o diminuire la quantità di registrazione che il codice produce senza dover modificare il codice, cioè modificando il livello di registrazione.

    
risposta data 02.05.2018 - 10:51
fonte

Leggi altre domande sui tag