Spring MVC - 로깅, 로그 사용

2022. 6. 21. 09:09·Back-End/Spring MVC

Spring MVC - 로깅, 로그 사용

로그란?

  • 프로그램 개발이나 운영시에 발생하는 문제점 파악 및 모니터링을 위해서 기록을 남기는 것
  • 기록 데이터를 분석하여 통계에 사용할 수 있음
  • 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용
  • 스프링 부트 라이브러리에는 스프링 부트 로깅 라이브러리가 포함됨

로깅 라이브러리

  • Sl4J : Logback, Log4j, Log4J2 등 많은 로그 라이브러리를 통합해서 인터페이스로 제공해주는 라이브러리
  • Logback : 실제 로그 라이브러리의 구현체

특징

  • 로그 레벨
    • ERROR : 요청을 처리하는 중 오류가 발생한 경우
    • WARN : 처리 가능한 문제이지만, 향후 에러의 원인이 될 수 있는 경우
    • INFO : 로그인이나 상태 변경과 같은 정보성 메시지
    • DEBUG : 개발 시 디버깅 목적으로 출력
    • TRACE : DEBUG레벨 보다 좀 더 상세한 메시지
  • 출력 레벨: TRACE > DEBUG > INFO > WARN > ERROR
  • EX1) 출력 레벨을 INFO로 지정 → INFO / WARN / ERROR 모두 출력
  • EX2) 출력 레벨을 TRACE로 지정 →TRACE / DEBUG / INFO / WARN / ERROR
  • 로그 레벨 설정 : application.properties에서 설정
# 전체 로그 레벨 설정 (기본 info)
logging.level.root=info

# 특정 패키지 로그 레벨 설정 (#hello.springmvc 패키지와 하위 로그 레벨 debug 설정)
logging.level.hello.springmvc=debug

로그사용의 장점

  • 쓰레드 정보, 클래스 이름 같은 부가 정보를 함께 볼 수 있고, 출력 모양 조정 가능
  • 로그 레벨에 따라서 서버상황에 맞게 로그 출력 가능
    • 개발 서버 → 모든 로그 출력
    • 운영 서버 → 최소한의 로그 출력
  • 로그를 파일, 네트워크 등 별도의 위치에 저장 가능
    → 파일로 남길때는 일별 / 지정한 용량에 따라 로그 분할 가능
  • 성능이 System.out보다 좋다 → 내부 버퍼링 / 멀티 쓰레드 등

사용방법

log.debug("data={}", data)

로그 사용 예시 코드

//@Sl4j
@RestController
public class LogTestController {
    //로거 멤버변수는 롬복이 제공하는 @Sl4j로 대체 가능
    private final Logger log = LoggerFactory.getLogger(getClass());

    @RequestMapping("/log-test")
    public String logTest() {
        String name = "Spring";

        System.out.println("name = " + name);

        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);

        //로그를 사용하지 않아도 a+b 계산 로직이 먼저 실행 되므로 좋지 않은 사용 방법
        log.debug("String concat log=" + name);

        return "ok";
    }

}

 

반응형
'Back-End/Spring MVC' 카테고리의 다른 글
  • 스프링 MVC의 구조 이해(2) - 실무에서 사용하는 방식 @RequestMapping, 스프링 MVC 컨트롤러
  • 스프링 MVC의 구조 이해(1) - DispatcherServlet, 핸들러 매핑과 핸들러 어댑터, 뷰 리졸버
  • 자바 백엔드 웹 기술의 진화과정(3) - 웹 프론트 컨트롤러 v4, v5
  • 자바 백엔드 웹 기술의 진화과정(2) - 웹 프론트 컨트롤러 v1, v2, v3
LightSource
LightSource
어제보단 발전한 오늘의 나를 위한 블로그
    반응형
  • LightSource
    LightSourceCoder
    LightSource
  • 전체
    오늘
    어제
    • 분류 전체보기 (152)
      • Git (4)
      • Language (6)
        • Java (6)
      • Back-End (63)
        • Spring Boot (4)
        • MyBatis (1)
        • Oracle (1)
        • PL SQL (3)
        • JPA (26)
        • Spring Data JPA (5)
        • Spring MVC (8)
        • Spring (12)
        • Spring Security (2)
        • Redis (1)
      • Front-End (38)
        • 아이오닉 (2)
        • JSP (7)
        • JavaScript (4)
        • React (16)
        • TypeScript (3)
        • Angular (6)
      • AWS (1)
      • CI & CD (1)
      • 개발지식 (13)
        • 네트워크 (9)
        • CS 지식 (4)
      • 데이터모델링 (2)
      • Tool (1)
      • 프로젝트 (5)
      • 독후감 (2)
      • 잡생각 (0)
      • 면접 준비 (1)
      • 알고리즘 (14)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    리액트
    배열요소수정
    react
    배열요소삭제
    배요소열추가
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
LightSource
Spring MVC - 로깅, 로그 사용
상단으로

티스토리툴바