Yes, there is a much easier method, at least this works very well for
me.

In log4j.properties, define the following ...

    log4j.rootLogger=info, R
    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=../data/${logfile.name}

and then in your code you simple set the name as follows ...

   logger = Logger::getLogger("MyApp");
   setenv("logfile.name", "MyApp.log", 1);

Very simple!

David

On Mon, 2008-06-09 at 11:38 -0700, Peter Steele wrote:
> 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