[TIL] W3D5 Logging

.·2021년 8월 25일
0

Logging

로그 남기기
System.out.println()은 정보 저장이 어렵고, 성능 문제가 있음(overhead)

SLF4J(Simple Logging Facade for Java)

  • Logging Framework들을 추상화해놓음
  • 하위의 어떤 프레임워크를 사용하는지 모르고 인터페이스를 사용
  • 여러 프레임워크를 바인딩 모듈로 연결
    // 소스 코드
    private static final Logger logger = LoggerFactory.getLogger(OrderTester.class);
    public void logName() {
        logger.info("name -> {}", properties.getName());
    }
    // 콘솔
    19:01:25.304 [main] INFO com.prgms.kdtspringorder.OrderTester - name -> jummi
    • private static final Logger logger : 같은 클래스의 인스턴스는 하나의 logger를 공유한다.
    • OrderTester.class, com.prgms.kdtspringorder.OrderTester : logger의 이름(class명을 사용한다.)
    • INFO : logger의 info 메소드 사용

Logback

Message format

  • RollingFileAppender
    하루마다 파일을 생성해서 로그를 기록하기
    RollingPolicy(무슨 파일을 어떻게 만들거냐)와 TriggerPolicy(언제 만들거냐)를 모두 정의해주어야 함
    -> TimeBasedRollingPolicy가 모두 구현해서 이것만 설정하면 끝
    <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    	  <file>logs/access.log</file>
    	  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    		  <fileNamePattern>logs/access-%d{yyyy-MM-dd}.log</fileNamePattern>
    	  </rollingPolicy>
    	  <encoder>
      	  <pattern>${LOG_PATTERN}</pattern>
    	  </encoder>
    </appender>
  1. <file>logs/access.log</file>이 없을 때
    access-2021-08-25.log 생성 -> 자정 지나면 access-2021-08-26.log가 새로 만들어지고 여기에 마저 로깅

  2. <file>logs/access.log</file>이 있을 때
    먼저 access.log가 생성 -> 자정이 지나면 access-2021-08-25.log로 변경 -> 새로운 access.log 생성, 로깅 -> ...
    최신 로그는 모두 access.log에 있게 된다. 날짜를 몰라도 오늘자 log구나 알 수 있다.

SpringBoot

Conversion over Configuration(CoC): 설정보다 관례를 중시한다.

  • 모든걸 설정하면서 application을 구성하기보다는, 관례에 따라 기본 구성이 됨. (best practice)
  • 단순성, 유연성


얘를 배너라고 한다.
Text to ASCII Art Generator (TAAG)에서 원하는걸 복사해서 resources/banner.txt에 붙여넣기


궁금한 점

  • Logback이 정확히 무엇인가?

0개의 댓글