programing tip

app.config에서 사용자 지정 TraceListener를 정의하는 방법

itbloger 2020. 11. 25. 07:44
반응형

app.config에서 사용자 지정 TraceListener를 정의하는 방법


사용자 지정 추적 수신기 (에서 파생 됨 TextWriteTraceListener)를 구현 했으며 이제 표준 대신 사용하도록 응용 프로그램을 설정하고 싶습니다 TextWriteTraceListener.

먼저 TextWriteTraceListener제대로 작동하는지 확인하기 위해 기본값 추가 했습니다. 내 app.config는 다음과 같습니다.

<configuration>
    <system.diagnostics>
        <trace autoflush="true" indentsize="4">
            <listeners>
                <add name="TextListener"  type="System.Diagnostics.TextWriterTraceListener" initializeData="trace.log" />
            <remove name="Default" />
            </listeners>
        </trace>
    </system.diagnostics>
</configuration>

이제 내 추적 수신기가 MyApp.Utils네임 스페이스에 정의되어 FormattedTextWriterTraceListener. 그래서 위 구성의 유형을 MyApp.Utils.FormattedTextWriterTraceListener다음과 같이 변경했습니다.

<configuration>
    <system.diagnostics>
        <trace autoflush="true" indentsize="4">
            <listeners>
                <add name="MyTextListener" type="MyApp.Utils.FormattedTextWriterTraceListener" initializeData="trace.log" />
            <remove name="Default" />
            </listeners>
        </trace>
    </system.diagnostics>
</configuration>

그러나 이제 뭔가를 기록하려고 할 때 ConfigurationErrorsException메시지와 함께 나타납니다.

MyApp.Utils.FormattedTextWriterTraceListener 클래스에 대한 유형을 찾을 수 없습니다.

누구든지 구성 에서이 사용자 정의 리스너를 어떻게 설정할 수 있는지 그리고 가능하다면 알고 있습니까?


다음과 같이 어셈블리도 지정해보십시오.

<configuration>
    <system.diagnostics>
        <trace autoflush="true" indentsize="4">
            <listeners>
                <add name="TextListener" 
                    type="MyApp.Utils.FormattedTextWriterTraceListener, MyApp"
                    initializeData="trace.log" />
            <remove name="Default" />
            </listeners>
        </trace>
    </system.diagnostics>
</configuration>

나는 최근에 이것으로 어려움을 겪고 있으며 누군가에게 도움이 될 경우를 대비하여 ...

내 유형이 존재한다는 것을 알았으므로 다음과 같이 썼습니다.

Assembly assembly = System.Reflection.Assembly.GetAssembly(typeof("yourclassname"));
Type myClassType = assembly.GetType("yournamespace.yourclassname");

제 경우에는 myClassType.AssemblyQualifiedName에 type 속성의 app.config 파일에 필요한 문자열이 포함되어 있습니다.

예를 들면 :

여기에 이미지 설명 입력

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Information,ActivityTracing" propagateActivity="true">
        <listeners>
          <add name="CircularTraceListener" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add name="CircularTraceListener" type="Microsoft.Samples.ServiceModel.CircularTraceListener, CircularTraceListener, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
           initializeData="C:\MyWebService\APILog\CircularTracing-service.svclog" maxFileSizeKB="1000" />
    </sharedListeners>
    <trace autoflush="true" />
  </system.diagnostics>

참고 URL : https://stackoverflow.com/questions/1176582/how-to-define-custom-tracelistener-in-app-config

반응형