728x90
반응형
SMALL
안녕하세요.
이번 데몬 프로젝트를 진행하면서 로그를 데몬별로 별도 파일로 로그를 뽑아내야하는 경우가 생겼습니다.
하나의 jar 파일에 설정만 다른게 여려개를 올려야 하는 경우가 발생하여 기존 XML방식의 logback설정이 아닌
동적으로 설정할 수 있도록 변경했습니다.
setLogger에 본인이 원하는 파라미터를 추가하여 설정을 변경 할 수 있습니다.
- 파일이름, 패턴 다른 설정들을 변경하여 같은 데몬을 돌리지만 서로 다른 logback 설정을 하여
경로, 내용, 레벨 등 다른 환경에서 구동할 수 있도록 합니다.
private static void setLogger(){
String dir = System.getProperty("user.dir"); // 현재 데몬 위치
// 로그 경로 property 추가
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
loggerContext.putProperty("LOG_DIR", String.format("%s/LOG/", dir));
String logDir = loggerContext.getProperty("LOG_DIR");
//최상위 ROOT logger에 설정
ch.qos.logback.classic.Logger log = loggerContext.getLogger("ROOT");
LoggerContext context = log.getLoggerContext();
// 시간이 지나 날짜별로 만들기 위해 설정
TimeBasedRollingPolicy<ILoggingEvent> policy = new TimeBasedRollingPolicy<>();
policy.setFileNamePattern(OptionHelper.substVars(
logDir + "history/sms.%d{yyyy-MM-dd}.log", context));
policy.setMaxHistory(30); // 최대 30일까지 로그 파일
policy.setContext(context);
// 로그작성 패턴
PatternLayoutEncoder encoder = new PatternLayoutEncoder();
encoder.setContext(context);
encoder.setPattern("%d{yyyy.MM.dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) [%class{36}] - %msg%n");
RollingFileAppender<ILoggingEvent> appender = new RollingFileAppender<>();
appender.setContext(context);
appender.setName("echo_log");
appender.setFile(OptionHelper.substVars(logDir + "/echo_log.log", context));
appender.setAppend(true);
appender.setPrudent(false);
appender.setRollingPolicy(policy);
appender.setEncoder(encoder);
policy.setParent(appender);
policy.start();
encoder.start();
appender.start();
log.setLevel(Level.INFO);
log.setAdditive(true);
log.addAppender(appender);
logger.info(">>> LOG DIR ::: [{}]", logDir);
}
728x90
반응형
LIST
'dev > java' 카테고리의 다른 글
프로그래머스 숫자 문자열과 영단어 JAVA (13) | 2021.08.08 |
---|---|
프로그래머스 완주하지 못한 선수- Java (6) | 2021.08.07 |
프로그래머스 서울에서 김서방 찾기 - Java (4) | 2021.01.31 |
JAVA 파일 가져오기 (0) | 2019.01.09 |
JAVA 엑셀 파일 읽기 & 쓰기 (0) | 2019.01.09 |