LogbackFileUtils.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | package test; import org.slf4j.LoggerFactory; import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.encoder.PatternLayoutEncoder; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.FileAppender; class LogbackFileUtils { public static final String MY_LOGGER = "MY_LOGGER" ; private static FileAppender<ILoggingEvent> fileAppender; private static boolean initialized = false ; public static void init() { if (!initialized) { LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); Logger myLogger = loggerContext.getLogger(MY_LOGGER); PatternLayoutEncoder encoder = new PatternLayoutEncoder(); encoder.setContext(loggerContext); encoder.setPattern( "%d{HH:mm:ss.SSS} [%-5level] %msg %n" ); encoder.start(); fileAppender = new FileAppender<ILoggingEvent>(); fileAppender.setContext(loggerContext); fileAppender.setName( "MY_FILE_LOGGER" ); fileAppender.setAppend( false ); fileAppender.setEncoder(encoder); myLogger.addAppender(fileAppender); initialized = true ; } } public static void start(String filePath) { init(); stop(); fileAppender.setFile(filePath); fileAppender.start(); } public static void stop() { if (fileAppender.isStarted()) { fileAppender.stop(); } } } |
logback.xml
1 2 3 4 5 6 7 8 9 10 11 12 | <? xml version = "1.0" encoding = "UTF-8" ?> < configuration > < appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender" > < encoder > < pattern >%d{HH:mm:ss.SSS} [%-5level] %msg %n</ pattern > </ encoder > </ appender > < root level = "DEBUG" > < appender-ref ref = "STDOUT" /> </ root > </ configuration > |
LogbackTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | package test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LogbackTest { private static Logger logger = LoggerFactory.getLogger(LogbackFileUtils.MY_LOGGER); public static void main(String[] args) { LogbackFileUtils.start( "first.log" ); logger.info( "1st file - This is an info message" ); logger.debug( "1st file - This is a debug message" ); logger.error( "1st file - This is an error message" ); LogbackFileUtils.stop(); LogbackFileUtils.start( "second.log" ); logger.info( "2nd file - This is an info message" ); logger.debug( "2nd file - This is a debug message" ); logger.error( "2nd file - This is an error message" ); LogbackFileUtils.stop(); logger.info( "console only - This is an info message" ); logger.debug( "console only - This is a debug message" ); logger.error( "console only - This is an error message" ); } } |