Created
January 27, 2014 09:42
-
-
Save kazimsarikaya/8645769 to your computer and use it in GitHub Desktop.
logback configuration with programmatically
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); | |
StatusManager statusManager = lc.getStatusManager(); | |
if (statusManager != null) { | |
statusManager.add(new InfoStatus("Configuring logger", lc)); | |
} | |
SiftingAppender sa = new SiftingAppender(); | |
sa.setName("SIFT"); | |
sa.setContext(lc); | |
MDCBasedDiscriminator discriminator = new MDCBasedDiscriminator(); | |
discriminator.setKey("vhost"); | |
discriminator.setDefaultValue("administration"); | |
discriminator.start(); | |
sa.setDiscriminator(discriminator); | |
sa.setAppenderFactory(new AppenderFactory<ILoggingEvent>() { | |
@Override | |
public Appender<ILoggingEvent> buildAppender(Context context, String discriminatingValue) throws JoranException { | |
RollingFileAppender<ILoggingEvent> appender = new RollingFileAppender<>(); | |
appender.setName("ROLLINGFILE-" + discriminatingValue); | |
appender.setContext(context); | |
appender.setFile(discriminatingValue + ".log"); | |
TimeBasedRollingPolicy<ILoggingEvent> policy = new TimeBasedRollingPolicy<>(); | |
policy.setContext(context); | |
policy.setMaxHistory(5); | |
policy.setFileNamePattern(discriminatingValue + "-%d{yyyy-MM-dd-HH-mm}-%i.log.gz"); | |
policy.setParent(appender); | |
policy.start(); | |
SizeAndTimeBasedFNATP<ILoggingEvent> innerpolicy = new SizeAndTimeBasedFNATP<>(); | |
innerpolicy.setContext(context); | |
innerpolicy.setMaxFileSize("512KB"); | |
innerpolicy.setTimeBasedRollingPolicy(policy); | |
innerpolicy.start(); | |
policy.setTimeBasedFileNamingAndTriggeringPolicy(innerpolicy); | |
policy.start(); | |
appender.setRollingPolicy(policy); | |
PatternLayoutEncoder pl = new PatternLayoutEncoder(); | |
pl.setContext(context); | |
pl.setPattern("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"); | |
pl.start(); | |
appender.setEncoder(pl); | |
appender.start(); | |
return appender; | |
} | |
}); | |
sa.start(); | |
ch.qos.logback.classic.Logger rootLogger = lc.getLogger(ch.qos.logback.classic.Logger.ROOT_LOGGER_NAME); | |
rootLogger.detachAppender("console"); | |
rootLogger.addAppender(sa); | |
String vhosts[] = {"test.com", "test2.com", "abc.test.com"}; | |
Logger logger = LoggerFactory.getLogger(App.class); | |
for (long i = 0; i < 10000000; i++) { | |
try { | |
Thread.sleep(1); | |
} catch (InterruptedException ex) { | |
logger.error("interrupt error", ex); | |
} | |
MDC.put("vhost", vhosts[(int)i%3]); | |
logger.info("hello my dear " + i); | |
} | |
System.out.println("Hello World!"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment