특정 값을 찍을 때 print를 찍기 일수다. 쉬우니까. 하지만 이 습관은 좋지 않다. 왜 인지 알아보자.
핵심 요약
- 이슈 트래킹 시간 감소
- print 대비 성능 높음 (multi thread)
- 코드 동작의 속도 파악
- 코드의 위치 파악
- 코드의 스레드 파악
문제가 되지 않는다고 생각하는 이유
- 어차피 출력 결과보는 건데, 굳이 사용해야 하는가?
- 개발 이후에 확인하기 위한 용도도 아니고, 개발 과정중 사용할 때 출력 비교용이라면 똑같은 용도아닌가?
- 많은 정보가 추가적으로 나오는 건 알겠는데, 왜 써야하는지에 대해서는 모르겠다.
즉, 단순 출력용으로 사용할 경우 크게 필요성을 못느낄 수 있다. 그리고 나중을 위해 Logger를 심어놓는 용도가 아니라면 둘의 차이를 모를 수 있다.
하지만, 어느 경우에 Logger를 사용하면 좋은지에 대해 명확히 알고, 단순 출력 용으로 선택하여 print문을 선택하는 것과는 차이가 있다.
Logger의 장점
- 시간에 대한 정보를 함께 준다.
- 해당 라인의 속도가 오래 걸리는지 직관적으로 파악 가능하다.
- 위치에 대한 정보를 알 수 있다.
- 어디 파일의 라인에서 해당 코드가 삽입되어 있는지 알 수 있다.
- 보통 Multi Thread 지원하여 속도가 빠르다.
print
의 경우 Lock이 걸려서 속도에 지장을 준다.
Logger를 사용하는 것이 좋은 경우
- 콘솔로 해당 코드의 실행 및 값을 주기적으로 파악하는 것이 유용한 경우
- 문제가 생길 소지가 있어, 추후 빠르게 로그만 보고 문제를 파악할 수 있도록 해야한다고 판단한 경우
- 로그가 없다면 어디서 문제가 발생했는지 파악하기 어렵다.
- 스레드도 같이 표기하면 좋은 경우
주의할 점
- 남발하지 말 것.
- 무의미한 로그는 오히려 단점이다.
- I/O
- 이에 로그 레벨을 따로 두어 관리하는 경우도 있다.
- 심각도 수준: ERROR > WARN > INFO > DEBUG > TRACE