본문 바로가기

Server Development/Spring Basic

Spring - Log(LogBack)

 

Spring에서 로그 관리는 어떻게 할까?

여러가지 로그 라이브러리를 통해 사용하는데, 나는 logback을 사용해보고자 한다.

 

로그를 찍을때, 우선 Error Level에 대해서 알아야한다. 크게 5가지가 있다.

아래로 갈수록 강한 오류이자 중요한 오류이다.

예를들어, Warn 지정시, Warn, Error 만 출력한다.

 

 

  • Trace : Debug 보다 더 디테일한 메시지
  • Debug : 디버깅을 위한 메시지
  • Info : 정보성 메시지
  • Warn : 밑의 Error의 원인이 될 수 있는 경우
  • Error : 로직 수행 중 오류, 시스템이 작동이 불가능한 경우

 

특징

- 테스트와 실제간 레벨 설정 가능.

- 출력 방식 (console, file, db) 등 설정 가능.

- 프로그램 중단없이 설정파일 변경 가능.

- 자체적으로 로그 압축 지원

- 로그 보관 기간 기능 설정 가능.

 

 

 

출력방식 설정

- 설정파일의 Appender에 설정

  • ConsoleAppender : 콘솔에 로그 출력
  • FileAppender : 파일에 로그 출력
  • RollingFileAppender : 로그의 레벨을 기준으로 여러개의 파일을 순회하며 로그를 저장
  • SMTPAppender : 로그를 메일로 전송
  • DBAppender : 데이터베이스에 로그 저장

 

 

작성순서

  • 1. Dependancy : Spring-boot-starter-web에 이미 포함됨.
  • 2. resourse 패키지에 해당 로그 사용을 위한 xml파일 설정.
  • 3. 사용하고자하는 클래스에 로그 사용을 위한 객체 생성후 작성

 

1. Dependancy

- starter-web에는 많은 라이브러리가 내장되어있지만 Logback또한 내장되어 있다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

 

 

2. xml 파일 작성

 

Appender 태그에서 위에서 나온 출력방식 중 하나를 설정하고

Root 태그에서 해당 로그를 출력할 최소레벨을 입력한다, 예를들어, Warn 지정시, Warn, Error, 즉 Warn 보다 높은 등급의 로그만 출력한다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds"> <!-- logback 구현체가 설정을 확인하는 주기 -->
  <property name="moduleId" value="MainProject"/><!-- 프로젝트가 설치된 폴더명-->
  <property name="type" value="MainProject"/><!-- 로그파일 생성시 파일을 구성하는 인자 -->
  <property name="logback" value="logback"/><!-- log를 저장할 최종 디렉토리명 -->
  <property name="logdir" value="DIRECTORY"/>


  <!-- Appenders -->
  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>DEBUG</level>
    </filter>
    <encoder>
      <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] %logger{30} %msg%n</pattern>
    </encoder>
  </appender>


  <!-- Root Logger -->
  <root level="INFO">
    <appender-ref ref="console" />
  </root>
  
  
</configuration>

 

 

3. 사용

 

사용하고자하는 클래스에서 아래와 같이 객체 생성후 사용하면 된다.

 

private final Logger Logger = LoggerFactory.getLogger(MemberDAO.class);




Logger.info("[MemberDAO] infoById(아이디에 맞는 회원정보 반환) 호출");

 

 

 

'Server Development > Spring Basic' 카테고리의 다른 글

Spring - AOP  (0) 2023.04.02
Spring - Exception  (0) 2023.04.01
Spring - MVC  (0) 2023.03.24
Spring - Spring Boot  (0) 2023.03.24
Spring - IoC/DI  (0) 2023.03.22