[ 
https://issues.apache.org/jira/browse/LOG4J2-531?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13897677#comment-13897677
 ] 

Geoff Ballinger commented on LOG4J2-531:
----------------------------------------

Fair comment wrt the unrealistic settings so I adjusted it to roll every hour 
and every 64kb (i.e. expect similar number of files per folder):

{code:xml}
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <RollingFile name="Test" fileName="logs/test.log" 
filePattern="logs/test/$${date:yyyyMMddHH}/TEST-%d{yyyyMMddHH}-%i.log.gz">
            <PatternLayout pattern="%d %p (%t) [%c] - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="64 KB"/>
            </Policies>
            <DefaultRolloverStrategy max="99"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="debug">
            <AppenderRef ref="Test"/>
        </Root>
    </Loggers>
</Configuration>
{code}

Running this overnight gave a similar pattern, e.g. the folder for 
{{2014021100}} contains one file with timestamps {{00:59:42,836}} to 
{{00:59:59,851}}, and then 15 others covering timestamps {{01:00:00,101}} to 
{{01:59:24,196}}. Only the last file's worth for each hour (the one rotated 
based on time) is in the correct folder, and the rest (rotated based on size) 
are in the previous hour's folder.

Geoff.

> Rolled log files overwritten by RollingFile appender with composite time and 
> size based policies
> ------------------------------------------------------------------------------------------------
>
>                 Key: LOG4J2-531
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-531
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Appenders
>    Affects Versions: 2.0-beta9
>         Environment: Ubuntu 12.04 and 13.04, java version "1.7.0_51"
>            Reporter: Geoff Ballinger
>            Assignee: Remko Popma
>             Fix For: 2.0-rc1
>
>
> We have a system which generates high volume logs which are required to be 
> preserved for audit purposes, and have been having problems with files being 
> unexpectedly overwritten.
> We are using a RollingFile appender with day granularity, time based and size 
> based triggering policies, and a rollover strategy with a suitably large max 
> value.
> I have created a simple test case with minute granularity to quickly 
> illustrate the problem, which is v. similar to the example given in the 
> documentation:
> {noformat}
> import org.apache.logging.log4j.LogManager;
> import org.apache.logging.log4j.Logger;
> public class LogTest
> {
>     private static final Logger logger = LogManager.getLogger("TestLogger");
>     public static void main(String[] args) throws Exception
>     {
>         for (long i=0; ; i+=1) {
>             logger.debug("Sequence: " + i);
>             Thread.sleep(250);
>         }
>     }
> }
> {noformat}
> ... with a config of:
> {noformat}
> <?xml version="1.0" encoding="UTF-8"?>
> <Configuration>
>     <Appenders>
>         <RollingFile name="Test" fileName="logs/test.log" 
> filePattern="logs/test/$${date:yyyyMMddHHmm}/TEST-%d{yyyyMMddHHmm}-%i.log.gz">
>             <PatternLayout pattern="%d %p (%t) [%c] - %m%n"/>
>             <Policies>
>                 <TimeBasedTriggeringPolicy />
>                 <SizeBasedTriggeringPolicy size="1 KB"/>
>             </Policies>
>             <DefaultRolloverStrategy max="999999"/>
>         </RollingFile>
>     </Appenders>
>     <Loggers>
>         <Root level="debug">
>             <AppenderRef ref="Test"/>
>         </Root>
>     </Loggers>
> </Configuration>
> {noformat}
> If this is run as is many of the rollover logfiles have other files written 
> over them and are lost, as can clearly be seen by the gaps in the remaining 
> sequence numbers, and the order the sequence numbers appear in the resulting 
> files.
> If the time based policy is removed from the config and it is re-run then all 
> sequence numbers are correctly stored and in the expected order., Without the 
> time based trigger some are carried over into the folder for the next period 
> which is not ideal, though is what we are using at present to avoid data loss.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to