2010-12-09 11 views
15

Ich arbeite an einem Projekt, das Log4J über Commons verwendet.Finden Log4J Log-Datei

Ich versuche, den Pfad zur Protokolldatei zu finden, aber ich finde keine geeignete Methode, die den Protokollpfad vom Logger zurückgibt.

Wer hat das jemals versucht?

Antwort

27

Sie müssen alle Appender aus dem Root-Logger bekommen und dann den Namen der Protokolldatei erhalten.

Enumeration e = Logger.getRootLogger().getAllAppenders(); 
    while (e.hasMoreElements()){ 
     Appender app = (Appender)e.nextElement(); 
     if (app instanceof FileAppender){ 
     System.out.println("File: " + ((FileAppender)app).getFile()); 
     } 
    } 
1

Vielleicht könnten Sie versuchen, die Appenders zu bekommen?

Enumeration appenders = logger.getRootLogger().getAllAppenders(); 

Wenn Sie eine FileAppender haben, können Sie die Datei ...

So etwas bekommen:

FileAppender fileAppender = null; 
Enumeration appenders = logger.getRootLogger().getAllAppenders(); 
while(appenders.hasMoreElements()) { 

    Appender currAppender = (Appender) appenders.nextElement(); 
    if(currAppender instanceof FileAppender) { 
     fileAppender = (FileAppender) currAppender; 
    } 
} 

if(fileAppender != null) { 
    logDest = fileAppender.getFile(); 
    System.out.println("logDest : " + logDest); 
} 

hoffe, das hilft!

+0

Ich habe Ihren Code aktualisiert es Java-centric zu machen, :) –

+1

Sie müssen das Stamm Logger verwenden, um den Appen zu bekommen. 'Logger.getRootLogger(). GetAllAppenders();' – dogbane

+0

@Die Elite Gentleman Danke, sieht jetzt besser :) – LaGrandMere