나는 Spring, Hibernate 및 로깅을위한 Apache log4j를 포함한 다른 라이브러리로 largish Java 웹 애플리케이션을 개발 중이다. 계속 진행중인 프로젝트 중 하나는 더 현명한 정보를 제공하기 위해 코드의 레거시 영역 (많은 부분을 작성하지 않았습니다!)에서 많은 수의 예외를 다시 작성하는 것입니다. 일반적인 예외 블록은 다음과 같습니다.Java에서 더 좋은 예외 정보 로깅
try {
//Some Hibernate business here
}
catch (Exception e) { //Yes, Exception. That's not just me being general. I find this especially frustrating.
log4j.error("Fail to XXXXXX"); //again, real
throw new MyException();
}
짐작할 수 있듯이 일부 어려운 로그가 있습니다. 나는이 예외로부터 더 나은 정보를 얻기위한 표준 방법을 찾고있다. 그 중 대부분은 Hibernate 호출을 감싸줍니다. 다음은 방금 작성한 블록과 비슷한 일반적인 블록입니다.
try {
myList.add(((myClass) commonService.getRecordByTableId(myClass.class, ID)).toString());
} catch (ServiceException e) {
log4j.error("Failed to retrieve record from table myClass for id " + ID);
e.printStackTrace();
}
여기 데이터베이스에서 레코드를 가져 와서 목록에 추가합니다. catch 블록에서 나는 try
블록이 무엇을하는지에 대한 합리적인 메시지라고 생각하는 것을 기록하고 스택 추적을 인쇄합니다. 그래서, 제 질문 : 오류 진단을위한 더 나은 정보를 얻기 위해 일반적으로 할 수있는 일과해야 할 일이 있습니까?
+1. 그렇게 할 수 있다면 더 많은 포인트를 줄 것입니다.나는 그 전에 여러 "에코"가있는 스택 추적을 보는 것에 지쳤습니다. –
예, 그렇습니다. 많은 "심각한"개발자가 대부분의 예외에 대해 충분한 처리를하기 위해 로깅 및 재실행을 고려하고 있다는 것은 놀랍습니다. – Guillaume
+1, 전화하세요. 이 프로젝트에서 나에게 매우 슬픈 일이 발생했는지에 대해 많은 이야기가 있습니다. 나는 그것을 모양대로 채우려고 노력하고 있습니다. : D – andronikus