[컴] ch.qos.logback 에서 RollingFileAppender 사용법

rolling log file appender / file로 logging / 로깅 / 로그 / 코드 사용법/ 코딩 / log rotate

ch.qos.logback 에서 RollingFileAppender 사용법

자세한 내용은 ref. 1을 참고하자.

아래 code에 있는 pattern 에 대해 간략한 설명:

// %-12 는 12개의 character 자리를 유지, %msg는 메시지, %n 은 new line
logEncoder.pattern = "%-12date{YYYY-MM-dd HH:mm:ss.SSS} %-5level - %msg%n"

TimeBasedRollingPolicy 에서 fileNamePattern:

  • TimeBasedRollingPolicy 에서 fileNamePattern의 값을 보고 rollover period 를 정한다.
// `yyyy-MM-dd_HH` 이기에 1시간에 한번씩 rollover 된다.
// `yyyy-MM-dd` 라면 1일에 한번씩 rollover 된다.
// maxHistory 는 log 를 몇개까지 보관하느냐로 보면 된다.
val logFilePolicy = TimeBasedRollingPolicy<ILoggingEvent>();
logFilePolicy.fileNamePattern = "${logDir}/archived/logfile-%d{yyyy-MM-dd_HH}.log.zip";
logFilePolicy.maxHistory = 7;
// @ref: https://logback.qos.ch/manual/layouts.html
val loggerContext = LoggerFactory.getILoggerFactory() as LoggerContext
val root = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME) as ch.qos.logback.classic.Logger
root.level = if(System.getProperty("log.level") == "debug") Level.DEBUG else Level.INFO

val logEncoder = PatternLayoutEncoder()
logEncoder.context = loggerContext
logEncoder.pattern = "%-12date{YYYY-MM-dd HH:mm:ss.SSS} %-5level - %msg%n"
logEncoder.start()

val logDir = "logs"
val logFileAppender = RollingFileAppender<ILoggingEvent>();
logFileAppender.context = loggerContext;
logFileAppender.name = "logfile";
logFileAppender.encoder = logEncoder as Encoder<ILoggingEvent>;
logFileAppender.isAppend = true;
logFileAppender.file = "${logDir}/logfile.log"; // 현재 directory 기준이다. directory 가 없으면 자동으로 생성한다.

val logFilePolicy = TimeBasedRollingPolicy<ILoggingEvent>();
logFilePolicy.context = loggerContext;
logFilePolicy.setParent(logFileAppender);
logFilePolicy.fileNamePattern = "${logDir}/archived/logfile-%d{yyyy-MM-dd_HH}.log.zip";
logFilePolicy.maxHistory = 7;
logFilePolicy.start();

logFileAppender.setRollingPolicy(logFilePolicy);
logFileAppender.start();

root.addAppender(logFileAppender)

Reference

  1. Chapter 6: Layouts | Logback Project
  2. TimeBasedRollingPolicy | Chapter 4: Appenders

댓글 없음:

댓글 쓰기