[logback-user] log rollover using %d multiple times in file name pattern?

ceki ceki at qos.ch
Tue Dec 20 16:36:46 CET 2011

Hi Thomas,

See inline response.

On 20.12.2011 15:09, Thomas Corte wrote:
> Hello,
> I'm trying to configure a log rollover with logs being *rolled daily*
> and put into a directory named "yyyy-MM", i.e. one folder for each
> *month* containing that month's logs. I'm using the following appender
> config:
> <appender name="FILE"
> class="ch.qos.logback.core.rolling.RollingFileAppender">
> <file>app.log</file>
> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
> <!-- rollover every minute -->
> <fileNamePattern%d{yyyy-MM}/app.%d{yyyy-MM-dd}.log</fileNamePattern>
> </rollingPolicy>
> <encoder>
> <pattern>%d{"yyyy-MM-dd HH:mm:ss,SSS"} [%thread] %-5level %logger{36} -
> %msg%n%xEx</pattern>
> </encoder>
> </appender>
> However, it seems as if the current logback implementation merely
> considers the first %d specification, which leads to a log rotation only
> once per month instead of the desired once per day frequency.

Yes, currently only the first %d token determines the rolling period.

> I figure this is because via %d, the log rotation frequency and the file
> name pattern are somewhat tied together and seemingly can't be specified
> independently.
> Is there any way to achieve what I'm trying to do without writing custom
> code?

I've started working on this problem. Can you please enter a bug report 
requesting this future along the lines of your email post? It makes 
referencing easier.

Here are some possible solutions.

First solution: add an option, say SECONDARY, to %d so that the token is 
*not* taken into account when determining the rollover period.

you would write:

Second solution: use a different identifier for the token, for example 
%t instead of %d.

you would write:

I have a slight preference for the first solution because it involves 
less code changes.

> Best regards,
> Thomas


More information about the Logback-user mailing list