All Honey Tip

[기술 면접] 14. System.out.println()메서드를 지양하는 이유를 아시나요?

수정 일:

발행 일:

System.out.println()메서드를 지양하는 이유를 아시나요?

저번 시간에 이어, 이번엔 애플리케이션 개발 시 System.out.println()메서드를 지양하는 이유에 대해 다루어 보겠습니다. 학부생 교육 과정에서 특별하게 언급되지 않는 이상 모르고 지나칠 수도 있는 내용입니다. 이번 기회에 숙지하실 수 있길 바랍니다.

System.out.println()메서드를 지양하는 이유를 아시나요?






Q: System.out.println()메서드를 지양하는 이유를 아시나요?

대표적으로 세 가지가 있습니다.

  • 우선, 휘발성으로, 어디에 적재되는 것이 아니라 출력 후 사라지기 때문에 로그로 추적할 수 없습니다.
  • 둘째로 로그의 시간, 위치, 수준 등이 전혀 없으므로 정보가 부족하다고 할 수 있습니다.
  • 마지막으로 성능이 저하됩니다. synchronized키워드를 사용하는데, 해당 메서드는 임계영역이 되고, 한 thread씩 접근해서 처리하며 I/O작업이 완료될 때까지 CPU가 대기하게 됩니다.






Q: 로그를 사용하는 이유가 무엇인가요?

쓰레드 정보, 클래스 이름 같은 부가 정보를 함께 볼 수 있고, 출력 모양과 로그 레벨을 조정할 수 있습니다.

  • 서버에는 모든 로그 출력, 운영 서버에는 출력 x


파일, 네트워크 등 로그를 별도의 위치에 다양한 형태로 저장할 수 있습니다.

내부 버퍼링, 멀티 쓰레드 등, System.out보다 성능이 수십 배 이상 뛰어나기 때문에, 실무에선 꼭 로그를 사용해야 합니다.





Q: 로그 사용 시,
log.debug(“data=”+data)와
log.debug(“data={}”, data)의 차이는 무엇인가요?

연산자를 사용한 로그는, 실제 CPU를 사용하여 연산이 발생하고, 파라미터를 넘기는 메서드는, 로그 레벨에 따라 실제 아무 연산이 발생하지 않기도 합니다.







자바 기초 내용을 좀 더 다지고 싶으신 분들에겐 아래 책들을 추천해 드립니다.

윤성우의 열혈 Java 프로그래밍:, 오렌지미디어 스프링 입문을 위한 자바 객체 지향의 원리와 이해, 위키북스 초보자도 간단히 단숨에 배우는 자바:동영상 강의 제공 | 쉽게 빠르게 편하게 시작하는 프로그래밍 입문, 터닝포인트





마치며

이번 시간에는 System.out.println과 로그에 대한 면접 질문들을 알아보았습니다. 생각보다 생소한 질문일 수 있지만, 응용 질문으로 등장하기 때문에 알고는 있어야 하는 내용입니다.

지금까지 많은 질문들을 다뤄 보았는데요, Java에 대한 면접 대비는 해당 Java 카테고리만으로도 강점을 어필할 수 있을 것으로 생각합니다.

내용이 적은 포스팅도 있으며, 한 번에 보기엔 많은 양을 기록한 포스팅도 있습니다. 1편부터 반복으로 학습하시고 좋은 결과를 내실 수 있으시길 바랍니다.

image 131





코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다