wadesworld
wadesworld

Reputation: 13733

Finding Log4J log file

I'm working on a project that uses Log4J via Commons.

I'm trying to find the path to the log file, but I'm not finding an appropriate method that will return the logfile path from the Logger.

Anyone ever attempted this?

Upvotes: 19

Views: 28941

Answers (2)

LaGrandMere
LaGrandMere

Reputation: 10359

Maybe you could try to get the Appenders ?

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

If you have a FileAppender, you can get the File ...

Something like that :

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);
}

Hope this helps !

Upvotes: 1

dogbane
dogbane

Reputation: 274542

You have to get all appenders from the root logger and then get the name of the log file.

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

Upvotes: 32

Related Questions