Elmah에서 응용 프로그램 이름을 프로그래밍 방식으로 설정하는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/153054

  •  03-07-2019
  •  | 
  •  

문제

Visual Studio에서 사용하는 구성에 따라 앱 이름을 변경해야합니다. 예를 들어, 디버그 구성에있는 경우 앱 이름이 Elmah_error 테이블의 응용 프로그램 필드에 'APP_DEBUG'로 표시하기를 원합니다. 누구든지 이것에 대한 경험이 있습니까? 아니면 다른 방법이 있습니까?

도움이 되었습니까?

해결책

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

올해 초 회사를 위해이 옵션을 탐색해야했습니다. Elmah가 응용 프로그램 이름을 가져 오기 때문에 기본적으로 이것을 조작하는 방법을 찾을 수 없었습니다. HttpRuntime.AppDomainAppId ErrorLog.cs 파일에서 원하는 키로 조작 할 수 있습니다. 그러나 그것은 앱풀의지도입니다.

그렇게 말하면, ErrorLog.cs 파일을 조작하여 Elmah를 핸들러 기반의 프레임 워크 대신 호출 가능한 프레임 워크로 바꾸고 ApplicationName을 설정할 수있었습니다. 내가 한 일은 ErrorLog.cs를 수정하여 아래와 같이 이름을 설정할 수있는 속성을 포함하도록 수정하는 것이 었습니다.

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

아마도 당신이해야 할 일은 이것을 다르게 조정하고 ApplicationName을 설정하지 않는 것입니다. HttpRuntime.AppDomainAppId 그러나 대신 web.config에서 가져온 값. 대체로 가능합니다. 내가 한 방식은 향상되었습니다 ErrorLog.Log(ex) 방법으로 Elmah를 사용하여 웹 응용 프로그램 이외의 호출 가능한 프레임 워크를 사용할 수 있습니다. 되돌아 보면 대신 앱/web.config 접근법을 수행했으면 좋겠다.

Elmah에서 응용 프로그램 이름을 변경할 때 명심해야 할 한 가지. /elmah/default.aspx 인터페이스를 생성하는 HTTP 처리기는 더 이상 작동하지 않습니다. 나는 여전히 그런 곳으로 돌아갈 시간을 찾으려고 노력하고 있습니다. 그러나 구현할 때 사용자 정의 인터페이스를 작성해야 할 수도 있습니다.

다른 팁

이것은 이제 순전히 마크 업에서 수행 될 수 있습니다. 그냥 추가하십시오 applicationName 에 귀속 errorLog 요소 <elmah> web.config 파일의 섹션. 예시:

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

나는 이것을 테스트했으며 예외를 기록 할 때와 로그를 볼 때 모두 작동합니다. Elmah.axd.

OP의 경우 프로그래밍 방식으로 설정할 수 있다고 상상할 수는 있지만 테스트하지는 않았습니다. 저와 나는 대부분의 시나리오에서 마크 업 접근법이 충분하다고 생각합니다.

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