2016-11-23 10 views
1

Java에서 예외 처리는 여러 가지 방법으로 수행 할 수 있습니다. 로깅 프레임 워크를 사용하는 예외 처리를 log4j 또는 sl4j으로 구분하여 두 가지 모두 예외를 처리하는 것 외에도 로그를 파일로 리디렉션 할 수 있습니다.printStackTrace와 Java의 로거 프레임 워크

로거 프레임 워크 대신 예외 클래스 메서드 printStackTrace()을 사용하여 예외를 처리하고 표준 오류 출력/console이 아닌 파일로 리디렉션하여 예외 호출 스택을 얻으려면 이제 다음과 같은 질문을 따르십시오.

  1. 나중에 구현에서 예외를 처리하겠습니까? 아니면 단순히 파일에 예외가 인쇄됩니까?
  2. 생산 환경에서 로거 프레임 워크를 구현하는 데 어떤 이유로 printStacktrace()이 적용됩니까?

미리 감사드립니다.

+0

나는 보통 둘 다 실제로 사용되는 것을 보았습니다. 'log4j'와'sl4j'가 사용 된 것을 보았고 예외가 잡히면'printStacktrace()'의 출력이 로거로 보내집니다. –

+0

감사의 말 Tim,하지만 프로덕션 환경에서 어떤 옵션을 사용할 지 궁금 해서요. 구성을 사용하여 appenders와 rotation을 사용할 수 있기 때문에 printstacktrace()보다 더 유리하게 만들 수 있습니다. –

+0

"나중에 구현할 때 "첫 번째 질문에서? –

답변

0

2) 로깅 프레임 워크는 더 나은 파일 처리기가 아니지만 예를 들어 코드에서 로그 아웃 구성을 추출합니다. 따라서 구성을 변경 (예 : 개발 및 프로덕션을위한 다른 세부 로그 수준)하면 코드를 변경할 필요가 없습니다. 각 테스트 단계마다 다른 로깅 프레임 워크 구성 만 사용하면됩니다. 로그 파일 이름, 로그 파일 크기 (순환) 또는 다른 패키지 또는 클래스의 특정 로그 정보를 변경하려면 구성을 수정하여 쉽게 변경할 수 있습니다.

+0

Niklas 감사합니다. 인쇄면에서 로거를 printStackTrace()와 비교할 수 있습니다. 로그 메시지는 예외 처리 기간에 예외 처리를하지 않지만 예외 처리는하지만 다른 파일/스트림에 대한 간단한 로그를 기록합니다 .... 나는 맞습니까? –

+0

"예외 처리"란 무엇을 의미하는지 모르겠습니다. 비즈니스 로직을 구현할 때 개인적으로 "예외 처리"라는 용어를 사용합니다. 예외가 발생하면 비즈니스 로직/트랜잭션을 중단하고 특정 오류를 표시하고 비즈니스 로직/트랜잭션을 중단하며 표준 오류를 표시하고 세부 정보를 기록합니다. , 비즈니스 로직/트랜잭션을 끝내고 백그라운드 로그에서 세부 사항을 ... - 이러한 모든 결정은 로깅 프레임 워크로 수행 할 수 없습니다. 그래서 내 말뜻은 로깅 프레임 워크는 예외 처리를 할 수 없다고 말할 것입니다. –

0

printStackTrace()once it's not a recent thing here을 사용하면 안되는 데는 많은 이유가 있습니다. 바퀴를 다시 활짝 열지 마십시오 (God's Perfect Exception link에 대한 특별한주의).

  • 같은 시간에 다른 장소에 우리의 로그를 보내기 :

    로깅 프레임 워크는 우리에게 많은 것을 (많은)를 할 수 있습니다. 대부분 콘솔 및 파일 출력과 같은 작업을 수행하고 전자 메일 또는 JMS를 사용하여 로깅 메시지를 보내는 여러 첨부자를 제공합니다.

  • 심각도 수준, 출처, 필터 키링 등으로 메시지를 사용자 지정합니다.
  • Java 코드를 변경할 필요없이 xml/properties 파일을 기반으로하는 간편한 사용자 정의 구성.
  • 분산 시스템의 경우 주로 비동기 처리.
  • 자세한 설정, 예외가 기록되는 방식 설정.

우리가 많은 기업들이 이미에 요즘 할 Splunk, Sumo Logic, Loggly, logstash 등과 같은 파일이 아닌 대상으로 로그를 보낼 수 있기 때문에 사용자 정의 펜더 기능, 특별히 중대하다 생산 시스템을 분석하고 모니터합니다.

또한 고객의 요구에 따라 analysing the right logging framework을 고려하십시오.