[logback-user] How to get rollingfileappender to roll over based on log size
Tony Trinh
tony19 at gmail.com
Tue May 27 08:08:52 CEST 2014
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 at 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 at qos.ch
> http://mailman.qos.ch/mailman/listinfo/logback-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.qos.ch/pipermail/logback-user/attachments/20140527/71b411fc/attachment.html>
More information about the Logback-user
mailing list