IJY
느리더라도 꾸준히
IJY
전체 방문자
오늘
어제
  • 분류 전체보기 (67)
    • Develop (67)
      • Java (8)
      • Go (0)
      • Test (1)
      • Web (1)
      • HTML, CSS (1)
      • TIL(Today I Learned) (18)
      • SQL (0)
      • Algorithm (27)
      • 회고 (7)
      • Troubleshooting (1)
      • Etc (3)
    • Etc (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • BufferedReader
  • MVC
  • stream
  • 백준
  • sort
  • Filter
  • PostConstruct
  • Interceptor
  • 12921
  • REST Assured
  • init
  • 독후감
  • 알고리즘
  • 초기화
  • 재귀
  • java
  • 회고
  • 우테코 온보딩
  • BufferedWriter
  • web
  • html
  • recursion
  • API 예외 처리
  • Spring
  • object
  • Class
  • 소수 찾기
  • 프로그래머스
  • EntityTransaction
  • instance

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
IJY
Develop/TIL(Today I Learned)

SpringBoot 기준 log 정리

Develop/TIL(Today I Learned)

SpringBoot 기준 log 정리

2023. 2. 2. 19:28

SpringBoot 프로젝트의 경우 "spring-boot-starter-web" 의존성 내에 "spring-boot-starter-logging" 의존성이 포함되어 있으며, 해당 의존성에는 다음과 같은 로그 관련 라이브러리들이 포함되어있다.

  • logback
  • slf4j
  • log4j

여기서 slf4j는 여러가지 로그 관련 라이브러리들을 통일된 방식으로 사용할 수 있도록 지원하는 인터페이스라고 보면 되고,

실제로 로그를 사용할 수 있도록 지원해주는 라이브러리들이 logback, log4j 라고 보면 된다.

그리고 SpringBoot 프로젝트에서는 기본적으로 logback을 사용한다.

 

사용 방법

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public LogTest {
    private final Logger log = LoggerFactory.getLogger(getClass());
    
    public logTets() {
        String name = "Log Test";
        
        log.trace("trace log={}", name);
        log.debug("debug log={}", name);
        log.info(" info log={}", name);
        log.warn(" warn log={}", name);
        log.error("error log={}", name);
    }
}

위와 같은 방식으로 쉽게 로그를 작성할 수 있다.

lombok 라이브러리를 사용한다면 위 코드를 아래와 같이 더 쉽게 변경할 수 있다.

import lombok.extern.slf4j.Slf4j;

@Slf4j
public LogTest {    
    public logTets() {
        String name = "Log Test";
        
    	log.trace("trace log={}", name);
        log.debug("debug log={}", name);
        log.info(" info log={}", name);
        log.warn(" warn log={}", name);
        log.error("error log={}", name);
    }
}

 

유의할 점

log 작성 시 다음과 같이 작성이 가능하며, 두 코드의 출력은 똑같다.

String name = "Log Test";

log.trace("trace log={}", name);
log.trace("trace log=" + name);

하지만 출력이 같다고 하더라도 두 코드에는 큰 차이가 발생하며, 이는 설정된 log level 보다 낮아 출력이 안되는 경우에 발생한다.

"{}"를 통해 변수를 표현하는 연산의 경우 "{}" 부분에 변수를 대입하여 문자열을 생성하는 연산을 수행하지 않지만,

"+"를 통해 변수를 표현하는 연산의 경우 실제로 문자열을 만드는 연산을 수행하게 된다. 즉, 불필요한 문자열 생성 연산이 추가되는 것

출력을 하지도 않을 로그 메시지를 연산하는 과정은 불필요한 리소스 소모이기 때문에 "+" 연산을 통한 로그 메시지 작성은 지양해야한다.

'Develop > TIL(Today I Learned)' 카테고리의 다른 글

JPA - 엔티티 수정(merge, dirty check)에 대한 내용 정리  (0) 2023.02.15
트랜잭션 스크립트 패턴과 도메인 모델 패턴  (0) 2023.02.14
SpringMVC DispatcherServlet 동작 방식  (0) 2023.02.02
[2022.06.10] Instagram 스키마 디자인  (0) 2022.07.25
[2022.05.24] 자료구조/알고리즘 - 재귀  (0) 2022.07.25
  • 사용 방법
  •  
  • 유의할 점
'Develop/TIL(Today I Learned)' 카테고리의 다른 글
  • JPA - 엔티티 수정(merge, dirty check)에 대한 내용 정리
  • 트랜잭션 스크립트 패턴과 도메인 모델 패턴
  • SpringMVC DispatcherServlet 동작 방식
  • [2022.06.10] Instagram 스키마 디자인
IJY
IJY
개발 관련 공부한 내용을 정리하는 블로그입니다. 느리더라도 꾸준히 포스팅을 하려고 노력합니다.

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.