2014-05-17 3 views
0

기본 클래스 EventSource (이벤트 공급자)에서 파생 된 "로거"클래스를 만들었습니다. 나는 이것을 사용하여 응용 프로그램을 계측합니다. 이제 애플리케이션에서 기록한 추적 메시지를 보려면 perfview GUI 도구를 사용합니다. 먼저 이벤트 공급자 "* Logger"를 등록한 다음이 도구를 통해 수집 프로세스를 시작합니다. 수집이 완료되면 기록 된 이벤트를 볼 수 있습니다.이 작업은 정상적으로 수행되지만 프로세스를 자동화해야합니다. 나는이 두 가지 문제에 직면하고이 과정을 자동화하려고 할 때EventSource etw provider C#을 등록하고 로그 파일에 출력을 캡처하는 방법.

: 내 이벤트 공급자를 등록하려면 어떻게해야

  1. 을 (바람직 만 C#을 라이브러리를 사용하거나 마이크로 소프트는 CLI 도구 [사용하지 않으 제공 이 작업을 수행 할 타사 도구 또는 라이브러리]])
  2. Logman 또는 다른 명령 줄 도구와 같은 도구를 사용하여 etl 파일에 기록 된 이벤트를 어떻게 수집합니까?

내가 아래에있는 내 응용 프로그램의 소스 코드를 제공 한 (매우 기본적이고 정직 코드를.) :

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    using System.Diagnostics.Tracing; 
    using System.Threading; 

    namespace EventLogging 
    { 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     Logger log = Logger.GetLogger(); 
     for (int i = 0; i < 100000; i++) 
     { 
      log.WriteError("Logging some serious error",i); 
      log.WriteWarning("Logging warning",i); 
     } 

    } 
    } 

    /// <summary> 
    /// Logger writes to instance. 
    /// 
    /// </summary> 
    class Logger : EventSource 
    { 
    /// <summary> 
    /// 
    /// </summary> 
    static private Logger _log; 

    /// <summary> 
    /// only one instance of Logger can be created. 
    /// </summary> 

    public static Logger GetLogger(){ 
     if (_log == null) 
      return (_log = new Logger()); 
     else 
      return _log; 
    } 
    private Logger() 
     : base() 
    { 

    } 

    [Event(101,Message="Application Failure Message: {0}",Level=EventLevel.Error)] 
     public void WriteError(String message1,int value){ 

     WriteEvent(101, message1,value); 

    } 
    [Event(102,Message="Application Warning Message: {0}",Level=EventLevel.Warning)] 
    public void WriteWarning(String message,int value) 
    { 
     WriteEvent(102, message,value); 
    } 




    } 


    } 

답변

4

Microsoft TraceEvent Library은 캡처 할 수 있습니다 및 프로세스 ETW는 추적합니다. EventSource를 이해하므로 아무 것도 등록 할 필요가 없습니다. here, herehere을 참조하십시오.