Anton Pryamostanov created LOGBACK-1442:
-------------------------------------------

             Summary: Adding "originalFileName" token to FileNamePattern or 
TimeBasedRollingPolicy
                 Key: LOGBACK-1442
                 URL: https://jira.qos.ch/browse/LOGBACK-1442
             Project: logback
          Issue Type: Improvement
          Components: logback-classic
         Environment: Let's consider the below example:
{code:xml}
    <appender name="OutputInfo" 
class="ch.qos.logback.classic.sift.SiftingAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <discriminator>
            <key>automaticThreadName</key>
            <defaultValue>Unnamed Thread</defaultValue>
        </discriminator>
        <discriminator>
            <key>inputQueueName</key>
            <defaultValue>APP</defaultValue>
        </discriminator>
        <discriminator>
            <key>outputQueueName</key>
            <defaultValue>APP</defaultValue>
        </discriminator>
        <sift>
            <appender name="${automaticThreadName}" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
                
<file>./LOGS/${inputQueueName}/${outputQueueName}/ERROR/${automaticThreadName}_ERROR_TODAY.log</file>
                <encoder 
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                    <Pattern>%d{yyyy-MM-dd HH:mm:ss} %mdc [%thread] %level 
%logger{35} - %msg%n</Pattern>
                </encoder>
                <rollingPolicy 
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    
<FileNamePattern>./LOGS/${inputQueueName}/${outputQueueName}/ERROR/ARCHIVE/%d{yyyyMMdd,
 aux}/${automaticThreadName}_%d{yyyyMMdd}_ERROR.zip</FileNamePattern>
                </rollingPolicy>
            </appender>
        </sift>
    </appender>
 {code}

It is not a valid example because FileNamePattern of TimeBasedRollingPolicy 
does not support MDC tokens like the SiftingAppender supports.

This is causing a significant limitation for SiftingAppender log archiving - a 
diversity of file names of SiftingAppender can be archived only into a narrow 
list of archives due to TimeBasedRollingPolicy not supporting MDC tokens.

This can be easily fixed just by adding 3 tokens into TimeBasedRollingPolicy 
FileNamePattern, which will represent:
- %q - qualified file name of original physical file, e.g. 
./logs/thread1/20181115/thread1_errors.log
- %f - only file name of original physical file, e.g. "thread1_errors.log"
- %p - only path of original physical file, e.g. "./logs/thread1/20181115/"

Therefore the above config will look like:
{code}
    <appender name="OutputInfo" 
class="ch.qos.logback.classic.sift.SiftingAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <discriminator>
            <key>automaticThreadName</key>
            <defaultValue>Unnamed Thread</defaultValue>
        </discriminator>
        <discriminator>
            <key>inputQueueName</key>
            <defaultValue>APP</defaultValue>
        </discriminator>
        <discriminator>
            <key>outputQueueName</key>
            <defaultValue>APP</defaultValue>
        </discriminator>
        <sift>
            <appender name="${automaticThreadName}" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
                
<file>./LOGS/${inputQueueName}/${outputQueueName}/ERROR/${automaticThreadName}_ERROR_TODAY.log</file>
                <encoder 
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                    <Pattern>%d{yyyy-MM-dd HH:mm:ss} %mdc [%thread] %level 
%logger{35} - %msg%n</Pattern>
                </encoder>
                <rollingPolicy 
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <FileNamePattern>%q.zip</FileNamePattern>
                </rollingPolicy>
            </appender>
        </sift>
    </appender>
{code}
            Reporter: Anton Pryamostanov
            Assignee: Logback dev list






--
This message was sent by Atlassian JIRA
(v7.3.1#73012)
_______________________________________________
logback-dev mailing list
logback-dev@qos.ch
http://mailman.qos.ch/mailman/listinfo/logback-dev

Reply via email to