2009-05-28 14 views
11

Ho un problema piuttosto semplice ma non riesco a trovare una soluzione per questo. Ho un logger con un gestore di file aggiunto, ma fa ancora casino fuori dalla mia console. Come posso ottenere che il logger instradi esclusivamente tutto l'output in un file, senza uscite della console?Java Logger solo per file, nessuna uscita schermo

+1

Il punto esclamativo fa questa domanda sembrano davvero eccitante. – jjnguy

+1

quale struttura di registrazione? –

risposta

5

Rimuovere tutti i gestori (utilizzando Logger.getHandlers() e chiamando Logger.removeHandler() per ogni gestore) dal registratore principale prima di aggiungere il gestore file.

+0

Logger.getHandlers() restituisce gestore 0 nel mio caso –

+0

Quando aggiungo FileHandler, la dimensione dei gestori va a 1 –

8

Il modo più semplice per garantire che nulla sarà scritto alla console è quello di mettere:

java.util.logging.ConsoleHandler.level = NONE 

nel file di configurazione di registrazione.

16

vecchia questione, ma per aiutare altri sviluppatori:

È anche possibile utilizzare logger.setUseParentHandlers(false) sul logger.

+0

Molto più semplice di qualsiasi altra risposta. –

+0

Questa è la risposta più aggiornata, semplice ed efficace. – charneykaye

1

Utilizzare log4j con

import org.apache.log4j.Logger; 

Logger logger = Logger.getLogger("com.whatever"); 
PropertyConfigurator.configure("file-log4j.properties"); 

e impostare i livelli di visualizzazione in file-log4j.properties:

# Root logger option 
log4j.rootLogger=INFO, file 

# Direct log messages to a log file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=index-service.log 
log4j.appender.file.MaxFileSize=1MB 
log4j.appender.file.MaxBackupIndex=1 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
log4j.appender.file.Append=false 
0

io uso:

Logger logger = Logger.getLogger("MyLog"); 
    Logger parentLog= logger.getParent(); 
    if (parentLog!=null&&parentLog.getHandlers().length>0) parentLog.removeHandler(parentLog.getHandlers()[0]);