2017-04-11 3 views
1

MVC 응용 프로그램이 여러 개 있습니다. 즉, 동일한 응용 프로그램이 여러 IIS 가상 디렉터리/응용 프로그램에 게시 된 다음 응용 프로그램 자체가 누구인지, 그에 따라 자체 (CSS)를 스킨합니다.Web.config에 설정된 Elmah 응용 프로그램 이름을 재정의하는 방법

:이 아주 잘 모든이지만,이 모든 것이 "MyappName"로 기록 될 경우 아래에있는 Web.Config ELMAH 섹션에서 철수한다 우리의 ELMAH 데이터베이스에 ELMAH에 의해 기록 된 것도이 같은 applicationName을 아래에 기록됩니다

질문은 특정 테넌트 웹 사이트의 오류를 구분할 수 있도록 web.config에서 applicationName 설정을 특정 방식으로 재정의하는 방법입니다.

답변

1

web.config에서 구성 할 수 있으므로 ELMAH는 응용 프로그램을 다른 위치에 배포 할 때 응용 프로그램 이름을 지정하는 방법을 이미 제공합니다. 단지 응용 프로그램을 사용하는 경우 일뿐입니다.

일반적으로 이는 배포 단계의 일부로 조작 할 수 있습니다. 수동으로 처리하는 경우 고통이 될 수 있지만 web.config 변형을 사용하면 쉽게 조작 할 수 있습니다. 입력에 대한

var service = ServiceCenter.Current; 

ServiceCenter.Current = context => 
{ 
    var connectionString = "YOUR CONNECTION STRING"; 
    var container = new ServiceContainer(service(context)); 
    var log = new SqlErrorLog(connectionString) { ApplicationName = "APP NAME HERE" }; 
    container.AddService(typeof(ErrorLog), log); 
    return container; 
}; 
+0

안녕 루크 감사 : 다음이 작동 할 경우, 당신은 당신의 Global.asax에 다음을 넣어 경우

<?xml version="1.0"?> <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <elmah> <errorLog applicationName="MyappName" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" /> </elmah> </configuration> 

나는, 궁금합니다. 불행히도 이것은 우리가 고객 (즉, 세입자)마다 변형이 없으므로 작동하지 않을 것이며 기본적으로 ELMAH에 표시하고자하는 고객/세입자 이름입니다. 우리는 DEV, UAT 및 LIVE 환경의 차이점에 대해 변환을 사용하고 있지만 200 개 이상의 프로젝트 구성 및 가능한 변환이 필요하지 않으므로 고객별로 변환하지 않습니다. –

+0

배포 중에 쉽게 자동화 할 수있는 항목입니다. 어느 위치에 세입자가 배치되는지 알면 올바른 세부 정보로 구성을 패치 할 수있는 완벽한 기회입니다. – Luke

+1

방금 ​​작동하는지 궁금해하는 코드를 추가했습니다. 나는 당신이 SQL에 로깅하고 있다고 가정했다. – Luke

관련 문제