[logback-dev] [JIRA] Commented: (LBCORE-242) log rollover should be configurable using %d multiple times in file name pattern
Ceki Gulcu (JIRA)
noreply-jira at qos.ch
Wed Dec 21 11:53:12 CET 2011
[ http://jira.qos.ch/browse/LBCORE-242?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12336#action_12336 ]
Ceki Gulcu commented on LBCORE-242:
-----------------------------------
Inferring the period from the file name pattern is less error prone. It is impossible to specify a shorter period than what the pattern can cater for. For example, when the period and the period are separate, it is possible to specify daily rollover for the pattern "%d{yyyy}.log" which would cause log archives to be clobbered on a daily basis. Inferring the period from the pattern avoid this problem.
On the other hand, separation is more flexible as it allows for patterns with higher precision. For example, for a daily rollover period, you could have %d{yyyy-MM-dd'T'HH_mm} as the pattern (precise to the minute). I don't see such flexibility as being useful. As such, safety trumps flexibility in this case.
I've considered two possible solutions to this problem:
First solution: add an option, say AUX (for auxiliary), to %d so that the token is *not* taken into account when determining the rollover period.
you would write:
<fileNamePattern>%d{yyyy-MM, aux}/app.%d{yyyy-MM-dd}.log</fileNamePattern>
Second solution: use a different identifier for the token, for example %t instead of %d.
you would write:
<fileNamePattern>%t{yyyy-MM}/app.%d{yyyy-MM-dd}.log</fileNamePattern>
I have a slight preference for the first solution because it involves less code changes. It has been implemented in [1] and [2]
[1] http://github.com/ceki/logback/commit/0fe93ab5
[2] http://github.com/ceki/logback/commit/7900adbe
> log rollover should be configurable using %d multiple times in file name pattern
> --------------------------------------------------------------------------------
>
> Key: LBCORE-242
> URL: http://jira.qos.ch/browse/LBCORE-242
> Project: logback-core
> Issue Type: Improvement
> Components: Rolling
> Affects Versions: 1.0.0
> Reporter: Thomas Corte
> Assignee: Ceki Gulcu
>
> 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:
> {noformat}
> <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>
> {noformat}
> 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.
> 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.
> It would be nice if either multiple %d specifiers would be supported, with an option to specify which one should be considered for the rollover period.
> Even better, it might be a good idea to support the rollover period to be specified separately and independently from the file name pattern; arguably, using the file name patterns for both is somewhat convenient, but violates the principle of "separation of concerns".
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the logback-dev
mailing list