
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();
[1] http://logback.qos.ch/manual/appenders.html#SizeAndTimeBasedFNATP [2] http://logback.qos.ch/manual/appenders.html#SizeBasedTriggeringPolicy
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