2011-02-11 4 views
0

Ent Lib 5를 사용하고 있습니다. 소스 속성이 현재 응용 프로그램 제품군의 일반 이름으로 설정된 이벤트 로그 수신기가 있습니다.런타임에 리스너 속성을 변경하십시오.

이 구성 파일은 여러 프로젝트와 링크/공유되어 있습니다 (자세한 이야기는 바뀌지 않을 것입니다).

각 응용 프로그램은 고유 한 소스 이름을 이벤트 로그에 저장하여 고유하게 식별 할 수 있습니다. 런타임에 소스 이름을 변경하려면 어떻게해야합니까?

실제 로그 이벤트 자체에 대해 원하는 내용을 쉽게 변경할 수 있지만 각 응용 프로그램의 수신기 소스 특성을 변경하려고합니다.

는 희망이 의미를

UPDATE한다 : 는 여기에 우리가 사용하고있는 구성 설정입니다 ... 그것이 내가 런타임에 변경하려는 소스 속성입니다.

이름 = "서식은 EventLog 일반"유형 = 추가 "Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, 버전 = 5.0.0.0, 중립 문화 =, PublicKeyToken = 31bf3856ad364e35"listenerDataType = "Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, 버전 = 5.0.0.0, Culture = 중립, PublicKeyToken = 31bf3856ad364e35"formatter = "텍스트 포맷터"traceOutputOptions = "None"filter = " 모두 "machineName =". " source = "CHANGE AT RUNTIME"log = "Application"

답변

0

특정 카테고리에 기록하도록 Logger에 요청할 수 있습니다.

아래 샘플은 AppOne, AppTwo 등 2 가지 범주를 만들었습니다. 그리고 두 개의 추적 수신기, AppOneListener (AppOne 범주에 바인딩 됨) 및 AppTwoListener (AppTwo Listener에 바인딩 됨)를 추가했습니다.

소스 코드에서 로그를 기록하려면 범주를 지정하십시오. categorySources 섹션과 청취자 섹션에서 봐 : 아래

Logger.Write("test 1", "AppTwo"); 

는 구성입니다.

<loggingConfiguration name="" tracingEnabled="true" defaultCategory="AppOne"> 
     <listeners> 
      <add name="AppOneListener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
       listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
       fileName="traceAppOne.log" formatter="Text Formatter" /> 
      <add name="AppTwoListener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
       listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
       fileName="traceAppTwo.log" formatter="Text Formatter" /> 
     </listeners> 
     <formatters> 
      <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
       template="Title:{title}{newline}&#xA;App Domain: {localAppDomain}{newline}&#xA;ProcessId: {localProcessId}{newline}&#xA;Process Name: {localProcessName}{newline}&#xA;" 
       name="Text Formatter" /> 
     </formatters> 
     <categorySources> 
      <add switchValue="All" name="AppOne" /> 
      <add switchValue="All" name="AppTwo"> 
       <listeners> 
        <add name="AppTwoListener" /> 
       </listeners> 
      </add> 
     </categorySources> 
     <specialSources> 
      <allEvents switchValue="All" name="All Events" /> 
      <notProcessed switchValue="All" name="Unprocessed Category" /> 
      <errors switchValue="All" name="Logging Errors &amp; Warnings" /> 
     </specialSources> 
    </loggingConfiguration> 
+0

미안하지만 분명히 설명하지 않았을 것입니다. 우리는 플랫 파일과 다른 속성을 가진 이벤트 로그 리스너를 사용하고 있습니다. 우리는 하나의 청취자 만 갖고 싶습니다. 현재 동일한 링크 된 구성 파일을 사용하는 31 개의 응용 프로그램이 있습니다. 소스 이름이 다른 31 명의 청취자를 원하지 않습니다. 그것은 설정 파일을 크게 만듭니다 (우리는 거기에 다른 것들을 가지고 있습니다). –

관련 문제