2009-01-31 1 views
4

기본적으로 ASP.NET은 캡처되지 않은 모든 예외를 시스템 이벤트 로그에 기록합니다. 나는 적절한 로깅 시설을 갖추어야한다는 사실을 알고 있지만 이것은 아무것도없는 것보다 낫다. 임시 해결책으로 잘 부합한다.ASP.NET의 이벤트 로그 원본 속성에 대한 사용자 지정 값

로그의 이벤트를 효율적으로 필터링하고 싶습니다.

EventLog eventLog = new EventLog("Application"); 
eventLog.Source = "My custom name"; 
eventLog.WriteEntry("Some error description ...", EventLogEntryType.Error); 

그러나, ASP.NET은 버전에 따라이 값을 "ASP.NET"을 설정합니다 프로그래밍 방식 로그인 할 때, 당신은을 통해 이벤트 로그의 원본 열에 대한 사용자 지정 값을 설정할 수 있다는 것을 배웠습니다. 간단히 web.config의 설명서를 확인했지만 변경해야 할 부분을 찾지 못했습니다. 나는 그것이 전혀 바뀔 수 있는지 궁금해.

답변

2

가장 좋은 건 (관리자에서) 설치시 레지스트리, 예를 들면 :

 
using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Configuration.Install; 
using System.Diagnostics; 

namespace InstallerClasses 
{ 
    [RunInstaller(true)] 
    public partial class EventLog : Installer 
    { 
     private EventLogInstaller eventLogInstaller; 

     /// 
     /// Creates the event log for MyApp 
     /// 
     public EventLog() 
     { 
      InitializeComponent(); 

      // Create an instance of an EventLogInstaller. 
      eventLogInstaller = new EventLogInstaller(); 

      // Set the source name of the event log. 
      eventLogInstaller.Source = "MySource"; 

      // Set the event log that the source writes entries to. 
      eventLogInstaller.Log = "Application"; 

      // Add myEventLogInstaller to the Installer collection. 
      Installers.Add(eventLogInstaller); 
     } 
    } 
} 

를 설정하고 확인하기 위해 의도 한대로 소스 속성을 사용하지만 설치에 설치 클래스를 사용하는 것입니다 설치 프로그램에서 사용자 지정 작업으로 실행됩니다.

+0

고맙습니다. 이렇게하면 source 속성이 임의 문자열로 사용되지 않는다는 것을 알 수 있습니다. –

0
당신은 그래서 프로그램 예외를 당신의 Global.asax에 포착되지 않은 예외를 처리하고 기록 할 수 있습니다

는 :

void Application_Error(object sender, EventArgs e) 
{ 
    Exception ex = Server.GetLastError().GetBaseException(); 
    // logging code here 
} 
+0

감사합니다. 나는 이것이 일반적으로 그렇게하는 것이 낫다는 것을 알고 있지만 간단한 설정 스위치를 찾고 있었다. –

1

이 소스 속성을 사용하는 것은 좋은 생각이 아니라고 보인다. 원래는 자유 형식의 텍스트라고 생각했습니다. 하지만 난 그냥 RegisterEventSource (...) Win32 API 함수를 통해 등록 할 수있는 뭔가가 발견하고 응용 프로그램이 관리자 권한으로 실행될 때만 작동하는 것으로 나타납니다. .NET은 자동으로 새로운 소스를 생성하지만, 관리자가 아닌 경우에는 예외가 발생합니다. 전반적으로 ASP.NET 내에서 임시 소스 이름을 사용하려면 사전 등록이 필요할 수 있습니다. 그러면 사전 배포가 필요합니다.