2013-11-20 4 views
0

내가 현재 작업하고있는 시스템은 문서의 메타 데이터를 사용하여 일부 논리를 수행하는 문서 세트 &을 거칩니다. 문서의 메타 데이터가 생기면 ... 예외를 던집니다. 시스템이 예외를 기록하면 작업을 실패합니다. & 개발자는 계속 진행하기 전에 로그를보고 문제를 해결할 수 있습니다.스택 트레이스를 데이터베이스에 저장하는 것이 좋습니다?

필자는 문서가 거의 없기 때문에 일반적으로 작업이 실패하는 것을 보았으므로 시스템 내결함성을 유지함으로써이 시스템을 즉흥적으로 만들고 싶습니다. 예외가 발생한 경우에도 시스템이 계속됩니다. 예외 정보는 문서 정보와 함께 데이터베이스 테이블에 저장됩니다. 이 정보는 개발자에게 전송되어 개발자가 고객을 기다리지 않고 해결할 수 있습니다. 고객은 나중에 이러한 실패한 문서를 별도로 처리 할 수 ​​있습니다.

제 질문은 테이블에 예외 정보를 저장하는 방법입니다. 예외는 이미 로그 파일에 기록됩니다. 한 가지 생각은 개발자가 나중에 로그 파일에서 타임 스탬프를 찾고 예외를 이해할 수 있도록 예외 타임 스탬프를 저장하는 것입니다. 그러나 이것은 로그 파일이 삭제 될 가능성이 있습니다.

전체 스택 추적을 데이터베이스에 저장하는 것이 합리적입니까?

+1

예외는 단지 예외입니다. 예외입니다. (예상) 오류 처리는 오류 처리입니다. 2를 섞지 마십시오. –

+0

제 생각에 데이터베이스에 예외를 저장하는 것은 과도한 행동입니다. 타임 스탬프와 오류 (메시지, 클라이언트, 예외 텍스트)를 사용하여 로그 파일을 로깅하면 충분하고 더 빠를 것입니다. 데이터베이스에 예외를 저장하고 싶다면 앱의 동일한 DB에 저장하지 말고 비동기로 설정하여 앱을 느리게하지 않는 것이 좋습니다 – user2196728

+0

이 질문은 programmers.stackexchange.com/에 그대로 있어야합니다. 의견 중심의 질문입니다. –

답변

0

프로덕션 시스템이 동일한 데이터베이스 또는 별도의 타임 스탬프, 사용자 ID 및 예외 및 스택의 오류 로그 테이블에 오류 및 예외를 기록하는 것은 드문 일이 아니며 문자열로 변환되어 다음과 같은 열에 저장됩니다. varchar (3000) 또는 예외 정보가 충분하게 저장되는 값으로 정의됩니다.

+0

글쎄,이 .... 논의 수 있습니다 나는 완전히 동의하지만, 많은 요소를 선택할 수 있습니다 ... 나는 별도의 사마귀 DB를 자동으로 사건을 던질 것이지만 (여전히 비동기) – user2196728

관련 문제