우아한 테코톡(11), 로깅

2022. 9. 13. 23:42간단한 컴퓨터 이론/우아한테코톡

728x90
반응형

본 포스팅은 우아한Tech의 테코톡 이스트님의 로깅 영상을 정리한 내용입니다.

로깅의 프레임워크와 설정을 위주로 정리했습니다.


로깅

 

로깅 프레임워크를 초기에 설정하는 것은 배우 복잡하기에 출력함수를 설정하는 경우가 많다. 실제로 로깅 프레임워크가 등장하기 전에는 출력함수를 많이 사용했다. 하지만 출력함수를 사용한 로깅은 어떤 환경에서든 똑같이 동작한다는 단점이 있다. 개발환경에서는 계좌번호나 비밀번호 등을 로깅할 필요가 있을 수 있지만 운영 환경에서는 이러한 정보는 드러나면 안된다. 이를 해결하기 위해 로깅 프레임워크를 만들었다. LOG 4J는 환경마다 다르게 로그 레벨을 설정해 개발 환경/운영 환경에서의 로깅 방법이 달라졌다. 

 

또한 자카르타 프로젝트에서 사용하던 로깅 프레임워크인 jul도 쓰였는데, 각 프레임워크를 쓸 때마다 설정을 해줘야하는 번거로움이 등장했다. 이에 따라 JCL이 등장했다. JCL동적 바인딩을 통해 런타임에 구현체를 로드하여 이러한 설정의 번거로움을 줄여주었다. 이는 스프링의 기본 설정이 되었다.

 

하지만 JCL은 다중 클래스 로더 환경에서 예외가 발생하는 ClassLoader Issue 문제가 있었다. 그리고 레거시로 남아잇는 로깅 프레임워크를 JCL로 변경시켜야한다는 단점이 있었다. 

 

이후 SLF4J가 등장해 정적 바인딩을 통해 동적 바인딩을 통한 이슈를 해결해주었다. JCL과 마찬가지로 로깅 프레임워크를 연결시켜주기도 했으며 브릿지라는 기능을 제공했다. 레거시로 남은 프레임워크를 호출했을 때 SLF4J로 리다이렉션해주어 SLF4J를 사용하는 것처럼 해주었다. 

 

 


로그 레벨

 

FATAL: 로그가 잘 남지 않을 수 있기에 실제로는 잘 쓰이지 않는다. 

ERROR: 개발자가 의도하지 않는 오류를 기록할 때 사용된다.

DEBUG: 자세한 정보가 나오기에 운영 환경에서는 잘 쓰이지 않는다.

TRACE: DEBUG와 마찬가지로 운영 환경에서는 쓰지 않는다.

 

설정한 레벨의 하이레벨에 대한 정보는 기록되지 않는다. 하지만 로우 레벨에 대한 정보는 남는다.

 

Logback 설정

Appender: 로그를 어디에 쓸 것인지 정하는 인터페이스

ConsoleAppender: 콘솔에 로그를 출력한다.

FileAppender: 로그를 파일에 출력한다.

RollingFileAppender: 특정 조건에 맞춰 다른 파일에 로그를 기록한다.

 

로그를 xml로 설정하는 것은 자동 리로딩 기능 때문이다. 설정 xml 파일의 변경을 스캔해 자동으로 재설정해준다. 이에 따라 서버 재시작이 필요하지 않게된다. 

 


출처

https://www.youtube.com/watch?v=1IMJCg68-lU 

 

728x90
반응형