본문 바로가기

카테고리 없음

로깅 (Logging) 이란?

Logging 은 애플리케이션의 동작, 상태, 오류 등을 기록하는 행위 이며, 이는 디버깅, 성능 모니터링, 보안 감사 등을 위해 중요한 역할을 한다.

 

다시 말해 로깅(Logging)은 로그(Log)를 기록하는 행위 이다.

 

Log 란?

 

로그는 과거 항해일지를 통나무에 기록했다하여 log(book) 의 개념이 나왔는데, 이 개념이 컴퓨터 영역으로 확장되면서 

운영 체제나 소프트웨어 실행 중 발생하는 정보를 기록한 파일로 불려지게 되었다.

 

 

로그 레벨 (Log Level)

 

일반적으로 사용되어지는 로그레벨은 6가지가 있다.

명칭 설명
TRACE 가장 세부적인 수준의 로그
DEBUG 디버깅 목적의 로그, 개발중 코드의 상태나 흐름을 파악하는데 사용
INFO 시스템 운영 상태를 나타내는 정보성 로그, 특정 로직의 이벤트 결과를 나타내는데 사용
WARN 잠재적으로 문제가 될 수 있는 상황을 나타낼때 사용
ERROR 시스템에 치명적이진 않지만, 문제가 발생했음을 나타내는데 사용
FATAL 시스템에 심각한 오류가 발생했을때 사용

 

 

자바 로깅 라이브러리

 

Slf4j (Simple Loggin Facade for Java)

 로깅 프레임워크의 추상 인터페이스 이다.

 

 Logback

 slf4j의 기본 로깅 구현체

 

이 외에도 Log4j & Log4j2 , 기타 라이브러리가 있다.

 

 

스프링부트에서 로그 사용하기

 

스프링 부트는 기본적으로 spring-boot-starter-logging 라이브러리가 함께 포함되어 있으며,

Slf4jLogback 을 채택하여 사용하고 있다.

 

 

로그를 사용하기전 Lombok 을 추가해주어야 한다.

# gradle    
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    
 # maven
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.28</version> <!-- 최신 버전 확인 후 추가 -->
        <scope>provided</scope>
    </dependency>

 

 

인텔리제이의 경우 롬복이 인식되지 않을 경우

 

롬복 플러그인을 설치해야한다.

 

 

Lombok 을 추가하였으면,

 

@Slf4j 를 해당 클래스에 선언하여 log 를 사용할 수 있다.

 

package com.example.log;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
public class LogController {

    @GetMapping("/log")
    public String log() {
        log.info("Log");

        return "log";
    }

}

 

 

postman 을 통해 

 

해당 URL 로 요청을 보내게 되면

 

아래와 같이 로그가 찍히게 된다.

 

 

                                                    어플리케이션 명 (Log)   

          시간                        레벨 PID                스레드이름      패키지 + 클래스                            로그 내용