본문 바로가기
로깅

[로깅] 로깅 #1

by 코딩하는경준 2022. 5. 5.

로깅?

프로그램이 동작시 발생하는 일을 기록하는 행위 입니다.



로그를 남기는 이유?

로그는 왜 남길까요?

로그는 서버를 운영하는데에 있어 가장 중요한 요소 입니다.

왜냐하면 운영 환경에서는 어떤일이 일어날지 아무도 모르기 때문입니다.

로깅을 함으로써 잘못된 부분을 고치고 디버깅을 할 수 있는 요소가 됩니다.

그렇다면 로그에는 어떤내용을 담아야할까요?

 

언제, 어떤 내용을 로깅 해야할까요?

사실 언제, 어떤 로그를 남겨야할지 답은 정해져 있지 않습니다.

프로젝트의 성격에 맞게 또는 팀에 맞게 혹은 요구사항에 맞게 로깅을 해야합니다.

한마디로 로깅 시점은 때에 따라 다르다는 것 입니다.

어떤 내용을 로깅해야할지 알려드릴 수는 없지만

주로 어떤내용이 들어가는지는 알려드릴 수 있습니다.

 

크게 서비스 동작상태, 장애(exception, error) 가 있습니다.

 

서비스 동작 상태에는 시스템 로딩, HTTP 통신, 트랜젝션, DB 요청, 의도를 가진 Exception 등이 있습니다.

 

어떻게 로그를 남길 수 있을까요? 

자바를 처음 배웠을때 기억나시나요? 

System.out.println("Hello, World!!");

라는 코드를 작성해보신적이 있으실겁니다.

System.out.println(); 로그를 남길 수 있는 방법 중 하나입니다.

하지만 성능이 떨어지는 이슈가 있어서 로깅을 할 때에는 대부분 로깅 프레임워크를 사용합니다.

 

로깅 프레임워크에는 대표적으로 Logback, Log4j 등 이 있습니다.

( 대표적인 로깅 프레임워크에대해서는 가볍게 다루지만, 자세한 설명은 다루지 않겠습니다. )

 

로그 레벨

로그에는 레벨이라는 개념이 존재합니다.

로그의 수준을 정의해둔것이죠.

위 표는 정의된 레벨과 사용하는 상황을 정리해둔 표 입니다.

 

로그 레벨과 설명은 이해하겠지만 아직 와닿지 않을 수 있습니다.

회원가입 시, DB 에 동일한 email을 가진 회원이 있을때, DuplcationException 을 던진다면

이 이벤트 로그는 어떤 레벨을 적용해야 할까요?

 

정답은 Info 레벨입니다.

왜냐하면 개발자가 의도한 에러이기 때문입니다.

 

한가지 팁을 드리자면 Fatal 과 Error 레벨은 개발자가 의도하지않은 에러가 발생하는 경우 이고,

Warn, Info, Debug, Trace 레벨은 개발자가 의도한 에러를 발생할때의 경우 입니다.

 

이번편은 주로 개념을 정리하는 위주로 포스팅 하였습니다.

다음 포스팅순수 자바를 이용하여 로깅을 실습해보는 예제를 포스팅 해보겠습니다.

Reference

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

- https://www.youtube.com/watch?v=fkwb8coxBJM 

- https://blog.lulab.net/programmer/what-should-i-log-with-an-intention-method-and-level/#%EB%A1%9C%EA%B7%B8-%EC%99%9C-%EC%A0%81%EC%9D%84%EA%B9%8C

'로깅' 카테고리의 다른 글

[로깅] 로깅 #3  (0) 2022.05.09
[로깅] 로깅 #2  (0) 2022.05.05

댓글