hayu's 개발 일지

[TIL]240328 로그(Log) 본문

프레임워크

[TIL]240328 로그(Log)

hayu00 2024. 3. 28. 21:24

로그(Log) 란?

  • 로그(Log) 란 프로그램 또는 시스템에서 발생하는 이벤트 ,정보, 상태, 오류 등을 기록한 것을 말한다. 즉 연속된 데이터의 기록이다. (System.out.println 도 일종에 로그를 남기는 것이다.)
  • sout 의 단점은 로그를 콘솔에만 남기고, 오류 추적을 위한 정보가 부족하며 많은 자원을 요구하는 것이다.
	// sout 와 log
	System.out.println(" 안녕하세요 ");
	System.out.println("환영합니다. yuha 님");
	log.info("{}", "안녕하세요");
	log.info("환영합니다. {}님", "yuha");
  • 로그를 생성하고 저장하는 것을 로깅(Logging) 이라 한다.
  • 로그는 기록된 데이터인 반면, 로깅은 생성하고 저장하는 프로세스와 도구를 모두 아우르는 말이다. 로그는 프로그램의 동작을 추적해 문제를 해결하거나 성능을 분석하기 위한 목적으로 활용된다. 때문에 로그 관리는 프로그램 개발과 운영에서 아주 중요한 역할을 한다.

로그(Log)의 5가지의 레벨

  1. Trace : 좀 더 상세한 상태를 나타낸다.
  2. Debug : 디버그용으로 사용한다.
  3. Info : 정보성 log 를 나타낸다.(요청 메세지 발생)
  4. Warn : 처리 가능하지만, 향후 에러의 원인이 될 수 있음을 경고해주는 경고성 메세지이다.
  5. Error : 요청을 처리하는 중 error 가 발생했다는 메세지이다.
  • 스프링은 기본적으로 Info,Warn,Error 를 찍어준다. Trace 와 Debug 은 로그가 엄청나게 많다.

로그(Log) 사용법

logging의 종류

 

Logback

  • log4j 이후에 출시된 향상되고 널리 사용되는 자바 로깅 프레임 워크 중 하나이다.
  • log4j의 구현체로써 동작하기에 스프링 부트 환경에서는 spring-boot-starter-web안에 spring-boot-starter-logging의 logback이 기본적으로 포함되어 있어서 별다른 dependency 추가 없이 사용가능하다.
  • 설정은 간단히 xml파일로 가능하며 적은 메모리를 점유하고 빠른 이행이 특징이다.
@RestController
public class LogTestController {
    // SLF4J Logger 객체 생성
    private final Logger log = LoggerFactory.getLogger(LogTestController.class);

    @GetMapping("log-test")
    public String logTest() {

        System.out.println("로그 테스트");

        log.trace("TRACE 로그");
        log.debug("DEBUG 로그");
        log.info("INFO 로그");
        log.warn("WARN 로그");
        log.error("ERROR 로그");

        return "ok";
    }

}

 

@log4j2

  • 가장 최신에 나온 로깅(logging) 프레임워크로써 log4j의 다음 버전이다.
  • 로그백(logback)처럼 필터링 기능과 자동 리로딩을 지원한다.
  • 로그백과의 큰 차이는 멀티 쓰레드(Multi Thread) 비동이 로거(Async Logger)의 경우 다른 로깅 프레임워크보다 처리량도 훨씬 많고 대기시간이 훨씬 짧다.
  • java8부터 도입된 람다식을 지원한다.

 

참고 자료

- https://dkswnkk.tistory.com/445

- https://velog.io/@dhtjdals77/Spring-log-%EC%82%AC%EC%9A%A9%EB%B2%95-%EB%B0%8F-%ED%8A%B9%EC%A7%95

- https://loosie.tistory.com/829

- https://wikidocs.net/163118

- https://letsplaycoding.tistory.com/15