protected FileAppender<ILoggingEvent> createRollingFileAppender(Encoder<ILoggingEvent> encoder, LoggerContext context, RollingPolicyFactory rollingPolicy) { RollingFileAppender<ILoggingEvent> appender = new RollingFileAppender<>(); appender.setFile(file); appender.setContext(context); appender.setEncoder(encoder); // Setup rolling policy RollingPolicy policy = rollingPolicy.createRollingPolicy(context); appender.setRollingPolicy(policy); policy.setParent(appender); // Setup triggering policy TriggeringPolicy<ILoggingEvent> triggeringPolicy = rollingPolicy.createTriggeringPolicy(context); if (triggeringPolicy != null) { appender.setTriggeringPolicy(triggeringPolicy); triggeringPolicy.start(); } policy.start(); appender.start(); return appender; }
@Override public TriggeringPolicy<ILoggingEvent> createTriggeringPolicy(LoggerContext context) { SizeBasedTriggeringPolicy<ILoggingEvent> policy = new SizeBasedTriggeringPolicy<ILoggingEvent>(); if (fileSize != null && fileSize.length() > 0) { policy.setMaxFileSize(FileSize.valueOf(fileSize)); } policy.setContext(context); return policy; }
private void init(FileLoggingSetup setup) { LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); lc.reset(); // 1) FileLoggingSetup - Encoder for File PatternLayoutEncoder encoder1 = new PatternLayoutEncoder(); encoder1.setContext(lc); encoder1.setPattern(setup.mLogPattern); encoder1.start(); // 2) FileLoggingSetup - rolling file appender RollingFileAppender<ILoggingEvent> rollingFileAppender = new RollingFileAppender<ILoggingEvent>(); rollingFileAppender.setAppend(true); rollingFileAppender.setContext(lc); //rollingFileAppender.setFile(setup.mFolder + "/" + setup.mFileName + "." + setup.mFileExtension); // 3) FileLoggingSetup - Rolling policy (one log per day) TriggeringPolicy<ILoggingEvent> triggeringPolicy = null; switch (setup.mMode) { case DateFiles: { TimeBasedRollingPolicy timeBasedRollingPolicy = new TimeBasedRollingPolicy<ILoggingEvent>(); timeBasedRollingPolicy.setFileNamePattern(setup.mFolder + "/" + setup.mFileName + "_%d{yyyyMMdd}." + setup.mFileExtension); timeBasedRollingPolicy.setMaxHistory(setup.mLogsToKeep); timeBasedRollingPolicy.setCleanHistoryOnStart(true); timeBasedRollingPolicy.setParent(rollingFileAppender); timeBasedRollingPolicy.setContext(lc); triggeringPolicy = timeBasedRollingPolicy; break; } case NumberedFiles: { FixedWindowRollingPolicy fixedWindowRollingPolicy = new FixedWindowRollingPolicy(); fixedWindowRollingPolicy.setFileNamePattern(setup.mFolder + "/" + setup.mFileName + "%i." + setup.mFileExtension); fixedWindowRollingPolicy.setMinIndex(1); fixedWindowRollingPolicy.setMaxIndex(setup.mLogsToKeep); fixedWindowRollingPolicy.setParent(rollingFileAppender); fixedWindowRollingPolicy.setContext(lc); SizeBasedTriggeringPolicy<ILoggingEvent> sizeBasedTriggeringPolicy = new SizeBasedTriggeringPolicy<>(); sizeBasedTriggeringPolicy.setMaxFileSize(setup.mNumberedFileSizeLimit); triggeringPolicy = sizeBasedTriggeringPolicy; rollingFileAppender.setFile(FileLoggingUtil.getDefaultLogFile(setup)); rollingFileAppender.setRollingPolicy(fixedWindowRollingPolicy); fixedWindowRollingPolicy.start(); break; } } triggeringPolicy.start(); rollingFileAppender.setTriggeringPolicy(triggeringPolicy); rollingFileAppender.setEncoder(encoder1); rollingFileAppender.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) mLogger; root.detachAndStopAllAppenders(); root.addAppender(rollingFileAppender); }
@Override public TriggeringPolicy<ILoggingEvent> createTriggeringPolicy(LoggerContext context) { return null; // There is no triggering policy }
/** * Creates triggering policy for rotation, if it is necessary. * * @param context * a logger context * @return triggering policy for rotation or null */ public abstract TriggeringPolicy<ILoggingEvent> createTriggeringPolicy(LoggerContext context);