2008-09-30 7 views
12

Visual Studio에서 사용중인 구성을 기반으로 응용 프로그램 이름을 변경해야합니다. 예를 들어, 디버그 구성에 있으면 응용 프로그램 이름을 Elmah_Error 테이블의 응용 프로그램 필드에 'App_Debug'로 표시해야합니다. 이 경험이있는 사람이 있습니까? 아니면 다른 방법이 있을까요?Elmah에서 프로그래밍 방식으로 응용 프로그램 이름을 설정할 수있는 방법이 있습니까?

답변

6

기본적으로 Elmah는 AppPool의 응용 프로그램 GUID를 기본 응용 프로그램 이름으로 사용합니다. HTTP 모듈을 통해 생성 된 웹 인터페이스를 볼 때 Elmah_Error 테이블의 오류를 식별하는 데 키를 사용합니다.

나는 올해 초에 내 회사를 위해이 옵션을 탐구 할 임무가 주어졌다. Elmah가 ErrorLog.cs 파일의 HttpRuntime.AppDomainAppId에서 응용 프로그램 이름을 가져온 이래로 기본적으로이 방법을 조작 할 방법을 찾지 못했습니다. 원하는 키로 조작 할 수 있습니다. 그러나 그것은 AppPool의 GUID입니다.

그렇다고해서 ErrorLog.cs 파일을 조작하여 Elmah를 핸들러 기반 대신 호출 가능한 프레임 워크로 만들 수 있었고 ApplicationName을 설정할 수있었습니다. 나는 나에게 다음과 같이 이름을 설정할 수 속성 포함 ErrorLog.cs를 수정 한 일을 결국 무엇 :

public virtual string ApplicationName 
     { 
      get 
      { 
       if (_applicationName == null) { _applicationName = HttpRuntime.AppDomainAppId; } 
       return _applicationName; 
      } 
      set { _applicationName = value; } 
     } 

는 당신이 아마 수행해야합니다 것은 다른이를 조정하고 HttpRuntime.AppDomainAppId하지 않도록 ApplicationName을 설정입니다 만 대신 web.config에서 가져온 값입니다. 대체로 가능합니다. 내가 수행 한 방법은 ErrorLog.Log(ex) 메소드를 향상 시켰기 때문에 Elmah는 웹 애플리케이션 이외의 호출 가능한 프레임 워크를 사용할 수있었습니다. 되돌아 보면 나는 app/web.config 접근 방식을 대신 사용했다면 좋겠다.

Elmah에서 응용 프로그램 이름을 변경할 때 유의해야 할 사항 중 하나는 다음과 같습니다. /elmah/default.aspx 인터페이스를 생성하는 http 핸들러가 더 이상 작동하지 않습니다. 나는 아직도 그와 같은 곳으로 돌아갈 시간을 찾고있다. 그러나 구현할 때 사용자 지정 인터페이스를 만드는 방법을 찾아야 할 수도 있습니다.

+3

아주 사소한 생각이지만,이 패턴이 더 마음에 든다. return _applicationName ?? (_applicationName = HttpRuntime.AppDomainAppId); –

+0

Elmah의 데이터베이스에있는 저장 프로 시저에는 응용 프로그램 이름에 대한 필터가 있습니다. 내 환경의 모든 저장 프로 시저를 변경하여이 필터를 무시하므로 모든 오류를 단일 콘솔에서 볼 수 있습니다. –

50

이제 마크 업에서 순전히 수행 할 수 있습니다. web.config 파일의 <elmah> 섹션에있는 errorLog 요소에 applicationName 속성을 추가하기 만하면됩니다. 예 :

<errorLog type="Elmah.SqlErrorLog, Elmah" 
    connectionStringName="connectionString" applicationName="myApp" /> 

나는 이것을 테스트 한 예외를 로그인 할 때와 Elmah.axd를 통해 로그를 볼 때 그것은 모두 작동합니다. 영업 이익의 경우

Source

, 하나는 너무 프로그래밍 방식으로 설정할 수 있습니다 상상하지만 난 그것을 테스트하지 않았다. 저와 저는 대부분의 시나리오에서 마크 업 접근법만으로도 충분하다고 상상해보십시오.

+0

정확히이 코드 줄을 넣으시겠습니까? 나는 그것을 작동시킬 수 없다. : – Chiramisu

+0

web.config 파일의 섹션. –

+1

고마워. 방금 당신이 먼저 그것을 에서 정의해야한다는 것을 배웠다. – Chiramisu

관련 문제