기본 클래스 EventSource (이벤트 공급자)에서 파생 된 "로거"클래스를 만들었습니다. 나는 이것을 사용하여 응용 프로그램을 계측합니다. 이제 애플리케이션에서 기록한 추적 메시지를 보려면 perfview GUI 도구를 사용합니다. 먼저 이벤트 공급자 "* Logger"를 등록한 다음이 도구를 통해 수집 프로세스를 시작합니다. 수집이 완료되면 기록 된 이벤트를 볼 수 있습니다.이 작업은 정상적으로 수행되지만 프로세스를 자동화해야합니다. 나는이 두 가지 문제에 직면하고이 과정을 자동화하려고 할 때EventSource etw provider C#을 등록하고 로그 파일에 출력을 캡처하는 방법.
: 내 이벤트 공급자를 등록하려면 어떻게해야
- 을 (바람직 만 C#을 라이브러리를 사용하거나 마이크로 소프트는 CLI 도구 [사용하지 않으 제공 이 작업을 수행 할 타사 도구 또는 라이브러리]])
- 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);
}
}
}