cl-r
cl-r

Reputation: 1264

log4j how I can get FileAppender's name with log4j..getRootLogger()

I use log4j.getRootLogger().getAppender("FICWARN") in my Java code, but I can't get the path of the FileAppender.

How can I get the name of the file where my messages are written ?

Upvotes: 0

Views: 304

Answers (1)

Benjamin Marwell
Benjamin Marwell

Reputation: 1246

It is the file you defined in your log4j.propertiers or log4j.xml.

Better log like this:

private static final Logger = LoggerFactory.getLogger(classname.class);
// or for specific channels    
private static final Logger = LoggerFactory.getLogger("FICWARN");

Now define an appender in your log4j

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/> 
    </layout> 
  </appender> 

  <appender name="FICWARN" class="org.apache.log4j.RollingFileAppender"> 
    <param name="file" value="ficwarn.log"/>
    <param name="MaxFileSize" value="100KB"/>
    <!-- Keep one backup file -->
    <param name="MaxBackupIndex" value="1"/>
    <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%p %t %c - %m%n"/> 
    </layout> 
  </appender> 

  <logger name="FICWARN">
    <level value="info"/> 
    <appender-ref ref="FICWARN" /> 
  </logger>

  <root> 
    <priority value ="debug" /> 
    <appender-ref ref="console" /> 
  </root>

</log4j:configuration>

Now your messages would go either to console (classname) or to ficwarn.log (String = "FICWARN").

Upvotes: 1

Related Questions