You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by Marcin Rembisz <re...@gmail.com> on 2010/04/08 17:50:38 UTC

Fwd: log4j 1.2.15 DOMConfigurator.subst

Hi,

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 or misunderstand, 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"
  >
*    <param*
*      name="File"*
*      value="${log.file}/${file.name}"*
*    />*
    <param
      name="Threshold"
      value="INFO"
    />
    <param
      name="MaxFileSize"
      value="2000KB"
    />
    <param
      name="MaxBackupIndex"
      value="10"
    />
    <layout class="org.apache.log4j.PatternLayout">
      <param
        name="ConversionPattern"
        value="%d{yyyy-MM-dd-ss} [%t] %5p %c.%M(%F:%L) - %m%n"
      />
    </layout>
  </appender>

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