문제

저는 현재 내부적으로 제작 된 많은 사용자 정의 응용 프로그램이있는 회사에서 일하고 있습니다. 현재 많은 것들에 대한 표준이 없습니다. 이 프로그램에서 발생하는 오류를 기록/추적하는 방법을 구현하고 싶습니다 (대부분 ASP.NET).

현재 Application Error Method에서 Global.asax에서 이것을 처리 할 생각입니다. 먼저 정보를 오류 로그/추적 데이터베이스에 저장하려고 시도하고 실패한 경우 이메일을 보내십시오.

오류 메시지 및 기타 응용 프로그램 변수 (페이지, 사용자 이름 등)에서 얻는 데 가장 유용한 정보 유형

현재 일반적인 오류 및 응용 프로그램 정보를 얻기 위해 두 개의 테이블을 사용하고 예외 정보를 보유하는 두 번째 테이블을 사용하려고합니다. 이것은 하나의 응용 프로그램 수준 예외에서 나올 수있는 내부 예외를 건네주는 하나에서 많은 관계가 될 것입니다.

나는 많은 세부 사항을 놓치고 있으며이 문제를 처리하기위한 전략을 듣고 싶습니다.

도움이 되었습니까?

해결책

Jeff Atwood는 당신이 봐야 할 훌륭한 예외 처리기를 썼습니다. CodeProject

가능한 한 많은 정보를 수집하려고합니다. 정보 세션을 스택 스택 정보 오류의 위치

또한 애플리케이션이 예외 정보를 시스템에 저장하기 위해 호출하는 웹 서비스를 설정합니다.

다른 팁

제 생각에는 엘마 당신이 찾고있는 것일 수 있습니다.

로깅 라이브러리 (예 : log4net)를 사용하는 경우 코드에 단일 로그 호출이있는 동안 이메일, DB, 파일, 이벤트 로그 등에 로그 로그인하여 다양한 로깅 부록을 설정할 수 있습니다. 이것 게시하다 시작하는 데 필요한 모든 것을 다룹니다.

또한 있습니다 ASP.NET 건강 모니터링.

편집 : 또 다른 포스터는 ASP.NET 오류를 녹음하는 데 적합하며 앱 실행에 동적으로 '주입'할 수있는 Elmah를 언급했습니다.

이것이 제가하는 일이며, 이메일 문제로 인해 여전히 버그가 있습니다.

DB에 아무것도 보관하지 않습니다. 원인 DB에 오류가 있으면 DB 원인에 해당 오류가 없으면 논리적으로 삽입이 실패합니다!

그래서 나는 bugs@mydomain.com과 같은 특별 이메일 주소로 이메일을 보냅니다.

주제: [응용 프로그램 이름] [타임 스탬프 : DDMMYYYY HHMMSS메시지: 응용 프로그램, 오류 메시지, 스택 추적 정보 + 사용자 이름 및 참조자와 같은 서버 변수와 같은 세션 변수.

ASP.NET 개발자의 가장 친한 친구입니다 그만큼 추적 정보를 쌓습니다, 여기서 당신은 무엇이 잘못되었고, 전화가 무엇인지, 어디로 전화했는지 알게 될 것입니다.

유일한 문제 이 시스템에있는 것은 이메일에 문제가있는 경우 아무것도 얻지 못할 것이며 (이메일을 보낼 때 예외) 월별 XML 파일 [ERRERLOG_ MMM_YYYY.XML]에 추가하고 만들기 시작했습니다. 오류를 확인하고 싶었던 월과 연도에 XML을로드 한 그리드 뷰가있는 간단한 "드래그 앤 드롭"페이지.

try 
{
   // production code
}
catch(Exception ex)
{
   Utilities.Mail.SendError(ex);
}

또는 가장 좋은 방법 : 추가하십시오 Application_error Global.asax에서 :

<%@ Application Language="C#" %>
<%@ Import Namespace="System.Diagnostics" %>
<script language="C#" runat="server">
void Application_Error(object sender, EventArgs e)
{
   //get reference to the source of the exception chain
   Exception ex = Server.GetLastError().GetBaseException();

   //log the details of the exception and page state to the
   //Windows Event Log
   EventLog.WriteEntry("myWebApplication name",
     "MESSAGE: " + ex.Message + 
     "\nSOURCE: " + ex.Source +
     "\nFORM: " + Request.Form.ToString() + 
     "\nQUERYSTRING: " + Request.QueryString.ToString() +
     "\nTARGETSITE: " + ex.TargetSite +
     "\nSTACKTRACE: " + ex.StackTrace, 
     EventLogEntryType.Error);

   Utilities.Mail.SendError(ex);
}
</script>

위의 코드를 사용하면 이벤트 로그에 오류를 추가하면 SendError (예외) 함수의 XML 파일에 오류가 추가됩니다.

HTTPS를 통해 도착한 기밀 정보를 기록 할 때 매우주의하십시오. 사용자는 엔드 투 엔드 암호화 (법적 요구 사항 일 수 있음)를 암호화 할 것으로 예상합니다. 일반 이메일을 통해 보내지 않도록하십시오.

일반적으로 Get, Post, Cookies, Form State (ASPNET), 사용자 에이전트, 기타 헤더, 날짜/시간, 서버 시스템 등을 포함한 모든 요청을 기록하고 있습니다.

그러나 어떤 경우에는 일부 정보가 기록되지 않아 영구적으로 기록되지 않아야합니다 (예 : 신용 카드 번호가 지불 제공 업체에게 전달됩니다). 이메일로 보내는 것이 더 나쁩니다.

HTTPS가 켜져 있는지 확인하는 것이 좋습니다. 그렇다면이 문제를 피하기 위해 로그 정보의 양을 줄입니다. 방금 현장을 통해 들판이 비어 있는지 또는 비어 있지 않은지 말하기 위해 보냈습니다.

실제로 솔루션을 꽤 잘 생각한 것 같습니다.

웹 개발 상점에서 일하면서 로깅 오류 외에도 DB 쿼리 등과 같은 시스템 중요한 오류도 이메일로 보내서 즉시 점프하고 바로 수정할 수 있도록해야합니다.

고려해야 할 대안은 매일 각 응용 프로그램에 발생한 각 오류에 대한 정보와 이메일에 원하는 관련 정보를 제공하는 보고서를 이메일로 보내는 것입니다.

오류의 타임 스탬프와 예외 메시지의 전체 텍스트를 포함하여 모든 오류를 해당 응용 프로그램의 단일 테이블에 해당 응용 프로그램에 대한 단일 테이블에 로그인합니다 (물론 데이터베이스가 모두 사내에서 포함 된 응용 프로그램에서 작업 할 때 수행하기가 더 쉽습니다). 이메일도 이메일을 받았습니다.

예외 메시지에는 함수 추적이 포함되어 있으므로 원래 호출 기능이 무엇인지 알 수 있습니다. 이렇게하면 주어진 버그가 매우 간단합니다.

데이터베이스에 로그인이 실패하면 서버의 이벤트 로그 또는 log.txt 파일에 쓸 수 있습니다. 여기서 선택한 웹 서버가 포함 된 웹 서버에 액세스 할 수 있는지 부분적으로 선택합니다.

빠른 응답이 필요한 경우 오류 알림 이메일을 보내는 것이 좋습니다. 그러나 스캔 할 오류 목록은 없습니다.

사용자 정보 (id, name), 모든 세션 변수, 모든 양식 변수를 포함하여 속성으로 특수 사용자 정의 예외 클래스를 작성하여이를 수행합니다 (양식이 어떻게 채워 졌는지, 사용자가 입력 한 내용을 볼 수 있음). 및 오류가 발생한 위치의 스택 추적 (어떤 페이지, 클래스, 방법)의 스택 추적을 넘어서는 일부 표시. 또한 호출 된 저장된 절차의 이름과 전송 매개 변수 또는 SQL 자체를 포함하십시오. 또한 모든 예외 속성 (스택 추적 등). 및 DisplayMessage 및 InternalMessage 필드. DisplayMessage가 사용자에게 표시됩니다. 내부 관리는 로그에 기록되어 있으며 디버그 모드에있을 때 사용자 정의 오류 페이지에 표시됩니다.

기본 페이지에서 page_error 로그인하고 Application_error의 실패로 로그를 작성합니다.

때로는 Web.config에 키 값 쌍을 추가하여 이메일 주소 (또는 배포 목록)를 포함합니다. 해당 키에 VAUE가있는 경우 알림 이메일이 전송됩니다. 가치가 없으면 유로 메일이 전송되지 않습니다. 그런 다음 테스트 또는 조기 생산 중에 문제에 대한 즉각적인 개인 알림을받을 수 있습니다. 초기 기간이 지나면 Web.Config에서 이메일 주소를 제거합니다.

로깅은 좋지만 응용 프로그램 모니터링 더 나은.

경고 : 나는 진정의 저자입니다

우리는 웹 사이트 오류보고 신청서에 좌절감을 느꼈으므로 Clearwind Consulting에 우리 자신의 글을 썼습니다. 무료이며 우리는 프로젝트에 내부적으로 사용합니다. 전체 오류 코드, 브라우저 유형, 트레이스 백, 오류, 오류 주파수가 30 일 이상 그래프로 표시된 코드 스 니펫과 같은 완전한 오류 정보를 제공합니다. Clearwind에서는 웹 응용 프로그램 개발을 수행합니다. 웹 사이트에 대해 효율적으로 사용할 수있는 실제 데이터를 제공 할 수있는 도구가 필요했습니다.

웹 사이트에 오류가 발생할 때 알림을 얻는 방법을 선택할 수 있습니다. RSS, 이메일 또는 모든 방법이 가장 적합한 방법이 모두 사용하여 오류 알림을 얻을 수 있습니다. 그리고 네, 음료를 마시면서 iPhone에 오류를 보낼 수 있습니다. Django로 완전히 작성되어 JSON, ROR, XML, CSV 등을 사용할 수 있습니다. 아니면 그냥 웹 사이트에 오십시오.

원한다면 www.areciboapp.com을보십시오.

그것은 무료이며 모든 웹 사이트에 쉽게 추가 (또는 제거)를 제공하며 실제 정보를 제공하여 404가 아닌 오류를 고칠 수 있습니다. 초대를 위해 초대하고 그것이 당신과 당신의 웹 사이트에 도움이 될 수 있는지 확인하십시오. 우리는 그렇게 생각합니다.

서버의 사용자 정의 이벤트 로그에 로그인하고 다른 로깅 및 알림을하는 것이 좋습니다. 인프라 문제로 인해 오류가 발생한 경우 동일한 문제로 인해 오류 핸들러가 이메일을 보내거나 데이터베이스에 저장하는 것을 막을 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top