2010-02-26 9 views

risposta

18

Dipende dalla configurazione di registrazione. Il valore predefinito dipenderà dal framework utilizzato. L'idea è che in seguito cambiando un'impostazione di configurazione da INFO a DEBUG vedrete una tonnellata di più (o meno se viceversa) linee stampate senza ricompilare l'intera applicazione.

Se si pensa a quale utilizzare, si riduce a pensare a cosa si desidera vedere a quale livello. Per altri livelli, ad esempio in Log4J, guarda l'API, http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html

6

Fondamentalmente dipende da come sono configurati i logger. In genere, durante lo sviluppo si dovrebbe eseguire l'output di debug ma disattivato in produzione, oppure è possibile che selezioni le categorie di debug durante il debug di una determinata area.

Il punto di avere priorità diverse è quello di consentire di alzare/abbassare il livello di dettaglio su un particolare componente in un modo abbastanza preciso - e solo bisogno di cambiare la configurazione di registrazione (piuttosto che il codice) per vedere la differenza.

100

Ti suggerisco di guardare l'articolo "Short Introduction to log4j". Contiene una breve spiegazione dei livelli di registro e dimostra come possono essere utilizzati nella pratica. L'idea di base dei livelli di registro è che si desidera poter configurare la quantità di dettagli che i registri contengono a seconda della situazione. Ad esempio, se si sta tentando di risolvere un problema, si desidera che i registri siano molto dettagliati. In produzione, potresti voler vedere solo avvertimenti ed errori.

Il livello di registro per ciascun componente del sistema è solitamente controllato tramite un parametro in un file di configurazione, quindi è semplice da modificare. Il tuo codice conterrà varie istruzioni di registrazione con diversi livelli. Quando si risponde a un Exception, è possibile chiamare Logger.error. Se si desidera stampare il valore di una variabile in un dato punto, è possibile chiamare Logger.debug. Questa combinazione di un livello di registrazione configurabile e di istruzioni di registrazione all'interno del programma consente il pieno controllo su come l'applicazione registrerà la propria attività.

Nel caso di log4j, almeno, l'ordine dei livelli di log è:

DEBUG < INFO < WARN < ERROR < FATAL 

Ecco un breve esempio da tale articolo che dimostra come funzionano livelli di log.

// get a logger instance named "com.foo" 
    Logger logger = Logger.getLogger("com.foo"); 

    // Now set its level. Normally you do not need to set the 
    // level of a logger programmatically. This is usually done 
    // in configuration files. 
    logger.setLevel(Level.INFO); 

    Logger barlogger = Logger.getLogger("com.foo.Bar"); 

    // This request is enabled, because WARN >= INFO. 
    logger.warn("Low fuel level."); 

    // This request is disabled, because DEBUG < INFO. 
    logger.debug("Starting search for nearest gas station."); 

    // The logger instance barlogger, named "com.foo.Bar", 
    // will inherit its level from the logger named 
    // "com.foo" Thus, the following request is enabled 
    // because INFO >= INFO. 
    barlogger.info("Located nearest gas station."); 

    // This request is disabled, because DEBUG < INFO. 
    barlogger.debug("Exiting gas station search"); 
+0

Dove si tracciano? – momomo

+0

@momomo si potrebbe voler controllare [questo] (http://stackoverflow.com/a/5278006/465053) risposta per sapere qual è il livello log 'Trace'. – RBT

+0

Il tuo esempio 'Se vuoi stampare il valore di una variabile in un dato punto, puoi chiamare Logger.debug' mi ha aiutato a chiarire la confusione che avevo tra il livello di' Debug' e 'Trace'. Grazie! – RBT

0

Qual è la differenza tra logger.debug e Logger.INFO?

Questi sono solo alcuni livelli predefiniti già definiti. Puoi definire i tuoi livelli, se lo desideri. Lo scopo di questi livelli è abilitare/disabilitare uno o più di questi, senza apportare alcuna modifica al codice.

Quando verrà stampato loger.debug ??

Dopo aver abilitato il debug o qualsiasi livello superiore nella configurazione.

7

Solo una precisazione circa l'insieme di tutti i livelli possibili, che sono:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 
0

Dipende da quale livello selezionato nel file di configurazione log4j.

<Loggers> 
     <Root level="info"> 
     ... 

Se il livello è "info" (per impostazione predefinita), logger.debug(...) non verrà stampata nella console. Tuttavia, se il tuo livello è "debug", lo farà.

A seconda del livello di criticità del codice, è necessario utilizzare il livello più accurata tra i seguenti:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF