Java代码的方式配置logback实现日志按天滚动

370 阅读1分钟


@Test
void testLog() throws InterruptedException {
   Logger logger = createLogger();
   logger.info("hello world");
}

private static Logger createLogger() {
   // 日志记录到哪个目录下面
   String LOG_STORE_DIR = "C:\Users\85129\Desktop\log\";
   LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
   PatternLayoutEncoder encoder = new PatternLayoutEncoder();
   encoder.setContext(context);
   
   // 日志记录格式
   encoder.setPattern("%msg%n");
   encoder.setCharset(StandardCharsets.UTF_8);
   encoder.start();

   TimeBasedRollingPolicy<ILoggingEvent> rollingPolicy = new TimeBasedRollingPolicy<>();
   rollingPolicy.setContext(context);
   
   // 日志文件的名称
   // 实现按天滚动,每天的00:00将会创建一个新的日志文件去记录
   rollingPolicy.setFileNamePattern(LOG_STORE_DIR + "systemLog" + "-%d{yyyyMMdd}" + ".log");

   // 日志保留天数,0 代表不删除日志,否则每天凌晨00:00会把指定天数的日志文件给删除
   rollingPolicy.setMaxHistory(0);

   RollingFileAppender<ILoggingEvent> appender = new RollingFileAppender<>();
   appender.setContext(context);
   appender.setEncoder(encoder);

   appender.setRollingPolicy(rollingPolicy);
   rollingPolicy.setParent(appender);
   rollingPolicy.start();
   appender.start();

   Logger logger = (Logger) LoggerFactory.getLogger("test");
   logger.setLevel(Level.INFO);
   logger.setAdditive(false);
   logger.addAppender(appender);
   return logger;
}