[logback-user] Switch logging to different files at runtime
lee json
jsonlee.ft at gmail.com
Fri May 23 11:04:09 CEST 2014
Changing to use sift appender is working with content similar to below
Thanks for the advice.
<configuration>
<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
<key>log.file</key>
<defaultValue>unknown</defaultValue>
</discriminator>
<sift>
<appender name="FILE-${log.file}"
class="ch.qos.logback.core.FileAppender">
<file>/path/to/log/${log.file}.log</file>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern><!-- ... log pattern ... --></pattern>
</layout>
</appender>
</sift>
</appender>
<root level="ALL">
<appender-ref ref="SIFT" />
</root>
</configuration>
On 21 May 2014 03:40, David Roussel <nabble at diroussel.xsmail.com> wrote:
> You can use sifting appender to change log file name dynamically based on values in the MDC.
>
> For instance you could have one log file per user. Or one line file per web session.
>
> David
>
>> On 20 May 2014, at 20:29, lee json <jsonlee.ft at gmail.com> wrote:
>>
>> I test to run a sample logging message to a file. But I am wondering
>> how can I switch logging to different files at runtime? For example,
>> initially the message is logged to <log_dir>/<file_a>.log. Later on I
>> would like the application to log message to <log_dir>/<file_b>.log.
>> Is it doable with logback lib?
>>
>> I want to log message to logs/<parent_key_id>/<key_id>...log. Is
>> RollingPolicy configured to start up once? How can I change logging to
>> another log file such as logs/<parent_key_id1>/<key_id1>...log when
>> certain condition is met?
>>
>> Thanks
>>
>> The current setting:
>> logback.xml
>> <?xml version="1.0" encoding="UTF-8"?>
>> <configuration scan="false" debug="false">
>> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
>> <rollingPolicy class="sample.logging.MyRollingPolicy">
>> <FileNamePattern>%keyId_%d.log.gz</FileNamePattern>
>> <MaxHistory>60</MaxHistory>
>> </rollingPolicy>
>> <layout class="ch.qos.logback.classic.PatternLayout">
>> <!-- http://logback.qos.ch/manual/layouts.html#PatternLayout -->
>> <Pattern>[%4p] [%d{ISO8601}] [%t] %c{1}: %m%n</Pattern>
>> </layout>
>> </appender>
>> <root level="INFO">
>> <appender-ref ref="FILE"/>
>> </root>
>> </configuration>
>>
>> MyRolling.scala
>> package sample.logging
>>
>> import java.io.File
>>
>> import ch.qos.logback.core.rolling.TimeBasedRollingPolicy;
>>
>> class MyRollingPolicy[E] extends TimeBasedRollingPolicy[E] {
>> override def setFileNamePattern(fnp: String) {
>> try{
>> println("fnp passed in: "+fnp)
>> val fnp1 = fnp.replace("%keyId", "k_1_3")
>> println("[after replaced] fnp1 now is "+fnp1)
>>
>> val f = new File("logs/" + "parent_key_id");
>> // Logback will create any necessary parent paths.
>> super.setFileNamePattern(f.getAbsolutePath() + "/" + fnp1);
>> } catch {
>> case e: Exception => {
>> println("something go wrong..."+e)
>> throw new RuntimeException(e);
>> }
>> }
>> }
>> }
>> _______________________________________________
>> Logback-user mailing list
>> Logback-user at qos.ch
>> http://mailman.qos.ch/mailman/listinfo/logback-user
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://mailman.qos.ch/mailman/listinfo/logback-user
More information about the Logback-user
mailing list