I am using the following code to set the log file dynamically instead of
defining it in the xml file:

 

        DOMConfigurator::configure(config);

        LoggerPtr logger = Logger::getLogger(cat_name);

        FileAppenderPtr appender = logger->getAppender("FILE");

        Pool p;

        appender->setFile(log_name);

        appender->activateOptions(p);

 

This works with one small side effect. It seems I have to provide a
default setting for the File parameter in the xml config file, otherwise
the configure command complains when the app runs. So I tried doing
this:

 

  <appender name="FILE" class="org.apache.log4j.FileAppender">

    <param name="Append" value="true" />

    <param name="File"   value="TBD" />

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

      <param name="ConversionPattern" value="%d %-5p [%t] [%c{1}]
%m%n"/>

    </layout>

  </appender>

 

but this ended up creating an empty file called TBD before the call to
setFile had a chance to run. I have a workaround where I set File to
/dev/null instead of TBD and this seems to work. Is there a
better/correct way to do this?

]

Reply via email to