개발자

[express] new Error() 관련 문의

4월 8일조회 24

안녕하세요. express 로 개발하고 있는 사람입니다. 저희 프로젝트의 구조는 new Error() 를 전달 해서 상위에서 try/catch로 해당 에러를 잡아서 로깅을 해주고 있습니다. 여기서 로깅을 할 때 파일명과 라인을 받기 위한 Error().stack을 사용해서 보고 있는데 가장 처음 error가 발생한 곳이 아니라 try/catch 하는 곳에 있는 stack 이 나오고 있습니다. 이 상황을 어떻게 하는게 좋을지 알려주실 수 있을까요? 기본적으로 이런 상황에서 로깅은 어떻게 할 수 있을지도 문의드립니다. 감사합니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 0

답변이 없을 때 보이는 아이콘

첫 답변을 기다리고 있어요.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

4월 8일

안녕하세요, 해당 문제는 Error 객체가 생성될 때마다 호출 스택의 스냅샷이 캡처되기 때문입니다. 따라서 Error를 생성할 때 아직 에러가 발생하지 않은 곳에서 new Error()를 호출하면, 해당 시점의 스택 트레이스가 캡처됩니다. 이 경우, 가장 먼저 error가 발생한 곳이 아니라 try/catch를 실행하는 곳의 스택 트레이스 정보가 담길 수 있습니다. 따라서, 이 문제를 해결하기 위해선 실제 에러가 발생하는 위치에서 바로 new Error()를 호출해야 합니다. 그리고 이 에러 객체를 상위 코드로 전달하여 로깅하거나 처리하는 방식을 사용해주시면 됩니다. 효과적인 로깅을 위해서는 로그 레벨을 설정하고, 필요한 정보(에러 메시지, 발생 위치 등)만을 포함시키는 것이 중요합니다. 추가로 express.js에서는 morgan, winston과 같은 로깅 라이브러리를 사용하여 커스터마이즈된 로깅 기능을 구현할 수 있습니다. 로그 레벨 설정은 개발 중에는 모든 로그를 확인할 수 있는 'debug' 또는 'info' 수준으로 하고, 실 서비스 환경에서는 에러 관련 로그만 확인할 수 있는 'error' 레벨로 설정하는 것이 일반적입니다. 이렇게 하면 중요한 정보만을 효율적으로 관리할 수 있습니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!