2014-04-16 14 views
6

Ho appena iniziato a utilizzare Java Logger. Ho provato a utilizzare i suoi metodi entering() e exiting() con una stringa codificata per nome e metodo della classe. Entrambi non hanno funzionato per me. Solo nessuna voce di registro per loro. Ma altre istruzioni di registro all'interno di quei metodi sono state registrate correttamente. Il mio livello di logger è impostato su CONFIG. Ho provato a impostare su ALL ma ancora non riesco a vedere la voce di registro da loro.Java Logger che immette() e che esce() metodi

Ho trovato per ogni voce, c'è già una riga con il nome della classe e il metodo di registrazione. Sembra che questi due metodi non siano necessari. Ma voglio ancora sapere come farli funzionare per me.

EDIT:

Il mio codice seguito: questi entrare() e in uscita() non sono creare una voce nel file di registro

//class variables 
private final static Logger logger = Logger.getLogger(MyClass.class.getName()); 
private static FileHandler logFileHandler = null; 

//within the main() method 
Logger thisLogger = Logger.getLogger(""); 
logFileHandler = new FileHandler(logFileNameStr, false); 
logFileHandler.setFormatter(new SimpleFormatter()); 
thisLogger.addHandler(logFileHandler); 
thisLogger.setLevel(Level.CONFIG); 
logger.log(Level.INFO, "Logfile Directory = " + logFileNameStr); 


//within a constructor of MyClass 
logger.entering("MyClass", "MyClass()"); 
.... 
logger.info(initMsg); 
.... 
logger.exiting(this.getClass().getSimpleName(), "MyClass()"); 

risposta

5

Entrare, uscire, e lancio sono registrati a livello FINER. Dovrai impostare il tuo logger su FINER o inferiore e impostare FileHandler su FINER o su inferiore.

thisLogger.addHandler(logFileHandler); 
thisLogger.setLevel(Level.FINER); 
logFileHandler.setLevel(Level.ALL); 

Per quanto riguarda lo stile va, si dovrebbe provare a creare un finale statico per il nome della classe, perché lo userete per creare il data logger e riferimento per tutte le tracce:

private static final String CLASS_NAME = MyClass.class.getName(); 

Per i nomi dei metodi non includere () nel nome, basta usare il metodo di inserimento/uscita che corrisponde al numero di argomenti.

Per i nomi dei metodi di costruzione utilizzare "<init>" e per i blocchi di init statici utilizzare "<clinit>" come nome del metodo poiché ciò è visualizzato in uno stacktrace.

Problemi correlati