Hi All,
 
Subject: logback generates two log files
i am using Rollingfile appender and Time based rolling policy for one of the app., it generates two files one with the log file (sample.log) and the other with yesterday's date (sample-2014-07-27.0.log). Appreciate if anybody help on this.
 
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <if condition='property("logFolder").contains("log")'>
   <then>
    <file>${logFolder}/Sample/sample.log</file>
   </then>
   <else>
    <file>sample.log</file>
   </else>
  </if>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
   <fileNamePattern>sreg-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
   <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    <!-- or whenever the file size reaches 50MB -->
    <maxFileSize>50MB</maxFileSize>
   </timeBasedFileNamingAndTriggeringPolicy>
  </rollingPolicy>
  <encoder>
   <pattern>[%d{ISO8601}] [%-18thread]  - %-25c{0}  - %-5p - %msg%n</pattern>
  </encoder>
 </appender> 


On Tuesday, July 8, 2014 7:48 AM, Jeremy Kane <jkane001@gmail.com> wrote:


That did the trick,  thanks!
On May 27, 2014 2:09 AM, "Tony Trinh" <tony19@gmail.com> wrote:
Hello Jeremy,

You mention a size-based policy, but I only see a time-based policy in your config.

The following patterns should work for RollingFileAppender. The code snippets are based on the code you pasted, and I did not test them. Please let me know if they work for you.

-Tony

Size-and-time-based rollover [1]
  • rolling policy = new TimeBasedRollingPolicy()
    • TimeBasedRollingPolicy.timeBasedFileNamingAndTriggeringPolicy = new SizeAndTimeBasedFNATP()
  • trigger policy = do not set (already handled by TimeBasedRollingPolicy)
Code:

    TimeBasedRollingPolicy<ILoggingEvent> rollingPolicy = new TimeBasedRollingPolicy<ILoggingEvent>();
    rollingPolicy.setMaxHistory(2);
    rollingPolicy.setFileNamePattern(fileDirectory + "/log.%d.txt");
    rollingPolicy.setParent(rollingFileAppender);
    rollingPolicy.setContext(loggerContext);

    // size-and-time-based rollover (5MB files).
    // We don't need to set this triggering policy's context or start
    // it because RollingFileAppender.start() does all that for us.
    // SizeAndTimeBasedFNATP.start() is relatively expensive, so do it
    // only once if we can avoid it.
    SizeAndTimeBasedFNATP<ILoggingEvent> triggerPolicy = new SizeAndTimeBasedFNATP<ILoggingEvent>();
    triggerPolicy.setMaxFileSize("5MB");
    rollingPolicy.setTimeBasedFileNamingAndTriggeringPolicy(triggerPolicy);

    rollingPolicy.start();

Size-based rollover [2]
  • rolling policy = new FixedWindowRollingPolicy()
  • trigger policy = new SizeBasedTriggeringPolicy()
Code:

    // size-based rollover (fixed window of 3 files, 5MB each)
    FixedWindowRollingPolicy rollingPolicy2 = new FixedWindowRollingPolicy();
    rollingPolicy2.setContext(loggerContext);
    rollingPolicy2.setFileNamePattern("foo.%i.log");
    rollingPolicy2.setMinIndex(1);
    rollingPolicy2.setMaxIndex(3);
    rollingPolicy2.start();

    // size-based rollover needs a triggering policy
    SizeBasedTriggeringPolicy<ILoggingEvent> triggerPolicy2 = new SizeBasedTriggeringPolicy<ILoggingEvent>();
    triggerPolicy2.setContext(loggerContext);
    triggerPolicy2.setMaxFileSize("5MB");
    triggerPolicy2.start();





On Wed, May 14, 2014 at 8:53 PM, Jeremy Kane <jkane001@gmail.com> wrote:
I've been trying to get the rollinglogfileappender to roll-over at a certain file size, but I've had no luck.  I can get it to roll over at midnight each night, but I still would prefer to either combine them or have it just be file-size limited.

My config is such:

// Rolling Log Appender
String fileDirectory = KanetikApplication.getFileDirectory(context);

RollingFileAppender<ILoggingEvent> rollingFileAppender = new RollingFileAppender<ILoggingEvent>();
rollingFileAppender.setContext(loggerContext);
rollingFileAppender.setAppend(true);
rollingFileAppender.setFile(fileDirectory + "/log.txt");

TimeBasedRollingPolicy<ILoggingEvent> rollingPolicy = new TimeBasedRollingPolicy<ILoggingEvent>();
rollingPolicy.setMaxHistory(2);
rollingPolicy.setFileNamePattern(fileDirectory + "/log.%d.txt");
rollingPolicy.setParent(rollingFileAppender);
rollingPolicy.setContext(loggerContext);
rollingPolicy.start();

rollingFileAppender.setRollingPolicy(rollingPolicy);

PatternLayoutEncoder fileEncoder = new PatternLayoutEncoder();
fileEncoder.setContext(loggerContext);
fileEncoder.setPattern("%d{h:mm:ss} %level - %msg%n");
fileEncoder.start();

rollingFileAppender.setEncoder(fileEncoder);
rollingFileAppender.start();

// LogCat Appender
PatternLayoutEncoder logcatEncoder = new PatternLayoutEncoder();
logcatEncoder.setContext(loggerContext);
logcatEncoder.setPattern("%msg%n");
logcatEncoder.start();

PatternLayoutEncoder tagEncode = new PatternLayoutEncoder();
tagEncode.setContext(loggerContext);
tagEncode.setPattern(tag);
tagEncode.start();

LogcatAppender logcatAppender = new LogcatAppender();
logcatAppender.setContext(loggerContext);
logcatAppender.setEncoder(logcatEncoder);
logcatAppender.setTagEncoder(tagEncode);
logcatAppender.start();

// add the newly created appenders to the root logger;
// qualify Logger to disambiguate from org.slf4j.Logger
ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);

root.setLevel(level);
root.addAppender(rollingFileAppender);
root.addAppender(logcatAppender);

Can anyone tell me why it's not working?

Thanks!
J

_______________________________________________
Logback-user mailing list
Logback-user@qos.ch
http://mailman.qos.ch/mailman/listinfo/logback-user


_______________________________________________
Logback-user mailing list
Logback-user@qos.ch
http://mailman.qos.ch/mailman/listinfo/logback-user

_______________________________________________
Logback-user mailing list
Logback-user@qos.ch
http://mailman.qos.ch/mailman/listinfo/logback-user