[Slf4j] Log 남기기

Manx·2022년 4월 29일
1

spring

목록 보기
11/24

서버의 로그를 System.out.println()으로 남기게 되면 많은 오류가 발생한다.
1. 사용자가 급격하게 늘 경우 해당 로그를 다 콘솔에 찍어야 하므로 많은 부담이 된다.
2. 해당 출력이 어디서 출력되었는지 찾기가 힘들다.

그래서 실무에서는 System.out.println()을 이용하여 콘솔에 출력하는 것이 아닌 Slf4j를 이용해 서버 로그를 남긴다.


@RestController
public class LogTestController {

    private final Logger log = LoggerFactory.getLogger(getClass());

    @RequestMapping("/log-test")
    public String logTest() {
        String name = "spring";
        System.out.println("logger를 통한 log 출력");
        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);
        return "ok";
    }
}

Slf4j에 있는 Logger를 통해 다음과 같이 로그를 콘솔 창에 출력하거나 파일에 저장할 수 있다.
사용된 쓰레드, 컨트롤러까지 친절하게 알려준다.

application.properties에 다음과 같이 설정해 패키지와 하위 로그 레벨도 설정할 수 있다.

# default = info
logging.level.hello.springmvc=debug

info로 설정하면 info, warn, error 레벨 출력
error로 설정하면 error 로그 레벨만 출력된다.

마지막으로 Lombok에서 에노테이션으로 Slf4j를 사용할 수 있게 지원해준다.

// @RestController : 문자 반환 시 스트링이 그대로 반환된다.
// @Controller : viewtemplate으로 이동
@RestController
@Slf4j
public class LogTestController {

    @RequestMapping("/log-test")
    public String logTest() {
        String name = "spring";
        System.out.println("logger를 통한 log 출력");
        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);
        return "ok";
    }
}

'스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 김영한님' 의 강의 내용을 정리한 것입니다.

0개의 댓글