Details
-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
1.0.6
-
None
Description
I want log files to be placed in directories containing date and rolled over every day. Moreover I want log files to be of maximum size of, let's say, 10MB. Each time a new log file is created, I would like to have it timestamped. Unfortunately, SizeAndTimeBasedFNATP doesn't work like that. Here's my logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<timestamp key="millisecond" datePattern="yyyyMMdd_HHmmssSSS"/>
<appender name="SSR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%p; %d; %t; %m; %n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>d:/ssr/log/%d
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<logger name="asseco.ssr" level="debug">
<appender-ref ref="SSR"/>
</logger>
<root level="info"/>
</configuration>
It causes a first file to be created, let's say d:\ssr\log\20120713\20120713_131110712_ssr.log
But after it reaches 10MB, it's not rotated, but log events are still appended to the same file.
Adding token %i to pattern, for example d:/ssr/log/%d{yyyyMMdd}
/%d
{yyyyMMdd_HHmmssSSS,aux}_ssr.%i.log shows the reason of problems. In such a case logs are rolled every 10MB, but filenames follow the same pattern with the same timestamp instead of new timestamp for every file: 20120713_131353836_ssr.0.log, 20120713_131353836_ssr.1.log etc.
The reason for this is that TimeBasedFileNamingAndTriggeringPolicyBase.dateInCurrentPeriod field doesn't get changed. Either it should change if rollback occurred triggered by maximum size or there should be another possibility of adding absolute timestamp which is calculated every time when it's needed.
Using:
<timestamp key="millisecond" datePattern="yyyyMMdd_HHmmssSSS"/>
with pattern:
<fileNamePattern>d:/ssr/log/%d
/${millisecond}_ssr.%i.log</fileNamePattern>
doesn't help also, because in such a case timestamp is every time the same, even after rollback triggered by date change.
Attachments
Issue Links
- is duplicated by
-
LOGBACK-741 SizeAndTimeBasedFNATP not honoring auxilliary parameter...
- Open