You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Ralph Goers (Jira)" <ji...@apache.org> on 2022/05/24 15:56:00 UTC

[jira] [Resolved] (LOG4J2-3432) RollingFileAppender fails after 100 backup cycles if filePattern contains "%04i" .

     [ https://issues.apache.org/jira/browse/LOG4J2-3432?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ralph Goers resolved LOG4J2-3432.
---------------------------------
    Fix Version/s: 2.18.0
       Resolution: Fixed

I've pushed a fix. Please verify and close.

> RollingFileAppender fails after 100 backup cycles if filePattern contains "%04i" .
> ----------------------------------------------------------------------------------
>
>                 Key: LOG4J2-3432
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-3432
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Appenders
>    Affects Versions: 2.17.1, 2.17.2
>         Environment: * Red Hat Enterprise Linux Server release 6.10 (Santiago)
>  * java version "1.8.0_181"
> Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
> Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
>  * 301873 Mar  9 07:53 log4j-api-2.17.1.jar
> 1790452 Mar  9 07:53 log4j-core-2.17.1.jar
>  
>            Reporter: Carl Smotricz
>            Assignee: Ralph Goers
>            Priority: Major
>             Fix For: 2.18.0
>
>         Attachments: Main.java, log4j2.xml, runit.sh
>
>
> If a {{%i}} formatter in a filePattern includes a width specifier, e.g. "%4i" or "%04i", file renaming fails after a certain fixed number of cycles. After that, successive backups are renamed to the maximum cycle number and overwrite previous files of that same cycle number, regardless of min and max settings on the appender. Here are some failure modes I've found by testing:
>  * if {{filePattern}} contains {{{}%06i{}}}, cycling breaks after 100.
>  * if {{filePattern}} contains {{{}%006i{}}}, it breaks after 100 also.
>  * if {{filePattern}} contains {{{}%6i{}}}, it breaks after 10.
>  * if {{filePattern}} contains {{%06i}} and {{{}DefaultRolloverStrategy.min{}}}=10000, {{{}max{}}}=99999, it breaks after just 1.
> Now, the doc doesn't mention the %i spec supporting width and leading zero modifiers in the manner of printf() or String.format() . Yet, those variations (which I think other users will also be tempted to try) work - until they don't. So apparently width and padding on that spec are implemented but buggy.
> The doc for RollingRandomAccessFileAppender explicitly recommends these format modifiers:
> {quote}... and/or a %i which represents an integer counter. The integer counter allows specifying a padding, like %3i for space-padding the counter to 3 digits or (usually more useful) %03i for zero-padding the counter to 3 digits.
> {quote}
> ...but I haven't verified that the problem occurs with that appender as well.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)