I have an XML configuration file with multiple appenders. Each of the appender has a variable associated with it.
I realize that all the variables have to be set before calling the DOMConfigurator. Without initializing all the variables, I get the following error. log4j:ERROR setFile(null,false) call failed. java.io.FileNotFoundException: (No such file or directory) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:179) at java.io.FileOutputStream.<init>(FileOutputStream.java:102) at org.apache.log4j.FileAppender.setFile(FileAppender.java:272) at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:151) at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:247) at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:210) at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java :140) at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator .java:153) at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigu rator.java:415) at org.apache.log4j.xml.DOMConfigurator.parseCategory(DOMConfigurator.java:335) at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:788) at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:673) at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:616) at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:584) at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:694) at com.chordiant.taskeng.server.core.TaskLogger.init(TaskLogger.java:44) at com.chordiant.taskeng.server.core.TaskLogger.main(TaskLogger.java:135) This is not viable in my case, since, different programs use the same configuration file to dynamically set the file name at *different* times. For eg, when prg1 initializes and starts logging, appender_01 variable is set and since prg 2 which uses appender_02 has not yet started the variable 2 is not yet initialized. What's a way around this issue using a single configuration file? <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="appender_01" class="org.apache.log4j.FileAppender"> <param name="File" value="${TaskServer.log}"/> <param name="Append" value="false"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%p] %r %C %d{ISO8601} %l %m %n"/> </layout> </appender> <appender name="="appender_02" class="org.apache.log4j.FileAppender"> <param name="File" value="${TaskServerHelper.log}"/> <param name="Append" value="false"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%p] %r %C %d{ISO8601} %l %m %n"/> </layout> </appender> <logger name="logger1"> <appender-ref ref=" appender_01"/> </logger> <logger name="logger2"> <appender-ref ref=" appender_02"/> </logger> </log4j:configuration> Thanks, Deepa.