[logback-user] Basic example of programmatically setting the configuration

Roger Thomas roger.thomas at p-mail.eu
Fri Jul 12 16:36:58 CEST 2013


I've just started to set up an environment with logback, but found 
examples for programmatically configuring logback limited, or a mix of 
solutions for a number of different logger interfaces. As such I hope 
that the code below helps someone in the future as an example. It may 
not be the best code on the planet but what it demos is

           - Select the root logger so that the configuration becomes 
the default.
           - Sets up a RollingFileAppender
           - Sets up a FixedWindowRollingPolicy
           - Sets up a SizeBasedTriggeringPolicy
           - Sets up a PatternLayoutEncoder

To be honest I'm not at the point of fully understanding all the steps 
so can't provide full docs for the example (yet).


package org.utils;

import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.rolling.FixedWindowRollingPolicy;
import ch.qos.logback.core.rolling.RollingFileAppender;
import ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy;
import ch.qos.logback.core.util.StatusPrinter;

import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;

import org.slf4j.LoggerFactory;

public class setupLogging
{
     public static void logbackInit()
     {
         Logger rootLogger = 
(Logger)LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);

         LoggerContext loggerContext = rootLogger.getLoggerContext();
         loggerContext.reset();

         RollingFileAppender<ILoggingEvent> rfAppender = new 
RollingFileAppender<ILoggingEvent>();
         rfAppender.setContext(loggerContext);
         rfAppender.setFile("log output.log");

         FixedWindowRollingPolicy fwRollingPolicy = new 
FixedWindowRollingPolicy();
         fwRollingPolicy.setContext(loggerContext);
         fwRollingPolicy.setFileNamePattern("log output-%i.log.zip");
         fwRollingPolicy.setParent(rfAppender);
         fwRollingPolicy.start();

         SizeBasedTriggeringPolicy<ILoggingEvent> triggeringPolicy = new 
SizeBasedTriggeringPolicy<ILoggingEvent>();
         triggeringPolicy.setMaxFileSize("5MB");
         triggeringPolicy.start();

         PatternLayoutEncoder encoder = new PatternLayoutEncoder();
         encoder.setContext(loggerContext);
         encoder.setPattern("%-4relative [%thread] %-5level %logger{35} 
- %msg%n");
         encoder.start();

         rfAppender.setEncoder(encoder);
         rfAppender.setRollingPolicy(fwRollingPolicy);
         rfAppender.setTriggeringPolicy(triggeringPolicy);
         rfAppender.start();

         rootLogger.addAppender(rfAppender);

         // generate some output

         StatusPrinter.print(loggerContext);

         rootLogger.debug("hello tt");
     }
}


More information about the Logback-user mailing list