자바 System.out.println() 위험성?

sakazin의 이미지

PMD에서 System.out.println을 violation으로 잡네요.

제가 회사컴이라 캡쳐화면이 업로드가 안되지만

대략 내용은

RuleSet name : Java Logging Rules
Rule name : SystemPrintln
Description Syste.(out|err).print is used. consider using a logger.

관련 링크 : http://pmd.sourceforge.net/rules/logging-java.html#SystemPrintln

이렇습니다만

pmd싸이트에 들어가봐도 왜 System.out.println대신 Logging을 써야하는지 구체적인 설명이 안나와있네요.
무슨 위험성이라도 있나요?

binul의 이미지

디버깅 등의 용도로 로그를 출력하기 위해 System.out.println 을 사용하게 되면
로그 레벨을 조정한다거나, 포맷을 변경한다거나, 로그를 켜고 끄거나, 출력 스트림을 변경하는 등의 로그와 관련된 모든 작업이 번거로워 집니다.
로그를 남겨야 한다면은 로그 정책을 세우고 정책을 반영할 수 있는 로거 클래스를 만들어서 사용하라는 의미로 받아들이시면 될 것 같습니다.
System.out.println을 반드시 써야 하는 경우엔 그냥 쓰시면 됩니다.

--------------------------------
그래날아보자꾸나