JAVA로 동적 logback 설정하기

2023. 6. 12. 13:50·dev/java
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
'dev/java' 카테고리의 다른 글
  • 프로그래머스 숫자 문자열과 영단어 JAVA
  • 프로그래머스 완주하지 못한 선수- Java
  • 프로그래머스 서울에서 김서방 찾기 - Java
  • JAVA 파일 가져오기
NCJ
NCJ
일상과 개발을 공유하고 소통하는 블로그입니다.
    반응형
    250x250
  • NCJ
    NCJ 프로그래밍
    NCJ
  • 전체
    오늘
    어제
    • ALL
      • dev
        • android
        • java
        • Spring Boot
        • node.js
        • MFC
        • react-native
        • web
        • 기타
        • vue
        • react
      • 일상
        • news
        • 요리
        • 영화
        • 드라마
        • 제품
        • 게임
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    던파 캐릭생성
    리니지w 이벤트
    리니지w 오픈
    삼성
    갤럭시
    던파 모바일 사전캐릭 생성
    게임
    Android
    다이어트
    리니지w 이벤트 안내
    리니지w
    Web
    던파 서버 오픈
    던파 모바일 서버오픈
    사전캐릭
    리니지w 보상
    던파 출시일
    리니지W 사전예약
    갤럭시 워치 4
    던파 모바일 사전캐릭
    java
    던파 사전캐릭
    코딩문제
    안드로이드
    window webserver
    apache
    CSS
    갤럭시 버즈2
    php
    리니지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
NCJ
JAVA로 동적 logback 설정하기
상단으로

티스토리툴바