Could you be running into?...
https://issues.apache.org/bugzilla/show_bug.cgi?id=43325

That said, you realize that you can just set system properties for this, right? So given...

<param name="File" value="${log.dir}/mylog.log"/>

You can set...

-Dlog.dir=/some/path/to/log/directory


You should make sure that the path exists. At least in older versions, Log4j wouldn't create this for you. That might have been changed in newer versions, but I wouldn't count on it.


Jake


On 4/9/2010 2:43 AM, Camer38 wrote:

Any chance for a help or at lease link to working example of
DOMConfigurator.subst




I try to use DOMConfigurator.subst to change dynamically in Java code
location of the output logging file. See log4j.xml below.

The following code is called in main method to set up file location:

     private static void setLogging(final String logDirectory, final String
logFileName) {
         Properties props = new Properties();
         props.put("dir.log", logDirectory);
         props.put("file.name", logFileName);
         String s3 = DOMConfigurator.subst("${dir.log}", props);
         String s4 = DOMConfigurator.subst("${file.name}", props);
     }

It does not work for me because I get following error:

log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: \ (The system cannot find the path specified)
     at java.io.FileOutputStream.openAppend(Native Method)
     at java.io.FileOutputStream.<init>(FileOutputStream.java:177)
     at java.io.FileOutputStream.<init>(FileOutputStream.java:102)
     at org.apache.log4j.FileAppender.setFile(FileAppender.java:290)
     at
org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:194)
     at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:164)
     at
org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:257)
     at
org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:285)
     at
org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:171)
     at
org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:184)
     at
org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:502)
     at
org.apache.log4j.xml.DOMConfigurator.parseRoot(DOMConfigurator.java:471)
     at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:921)
     at
org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:790)
     at
org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:696)
     at
org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:471)
     at org.apache.log4j.LogManager.<clinit>(LogManager.java:125)
     at org.apache.log4j.Logger.getLogger(Logger.java:118)
     at
curam.tools.upgradehelper.SampleJavaSourceMigrationTool.<clinit>(SampleJavaSourceMigrationTool.java:36)

Could you give me a tip what am I missing, please?

Marcin

log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration
   debug="null"
   xmlns:log4j="http://jakarta.apache.org/log4j/";
   threshold="null"


   <appender
     class="org.apache.log4j.RollingFileAppender"
     name="LogFileAppender"
   >




     <layout class="org.apache.log4j.PatternLayout">

     </layout>
   </appender>

   <!-- Loggers  -->
   <root>
     <level value="DEBUG"/>
     <appender-ref ref="CONSOLE"/>
     <appender-ref ref="LogFileAppender"/>
   </root>
</log4j:configuration>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to