EventSource을 기반으로하는 사용자 정의 클래스로 ETW를 구현하려고합니다 (의도 한 디자인대로). 나는 base constructor(문자열 이름) 기본 생성자를 사용하여 작성된 사용자 정의 EventSources가 로깅되지 않습니다
public class TestSource : EventSource
{
public static readonly TestSource Log = new TestSource();
public TestSource() : base() { }
public void LogMe(string msg)
{
WriteEvent(1, msg);
}
}
를 사용할 때 잘 로그를 볼 수 없지만 나는 constructor that lets you define the name
public TestSource() : base("TestSource") { }
로그를 사용하여 전환 할 때 더 이상 표시하고 있습니다.
생성자 (I've used the flag to throw construction errors) 또는 로그 (used the flag for this as well)를 작성하기 위해 호출 할 때 문제가 없습니다. 또한 IsEnabled은 Visual Studio의 진단 이벤트 창에 소스를 추가하면 "true"입니다.
따라서 소스가 올바르게 등록되고 Write 메서드가 성공적으로 실행되지만 로그가 실제로 보내지지 않습니다. 모든 것은 내가 base()
을 사용할 때와 같은 것처럼 보이지만 그 생성자를 사용하지 않으면 로그가 나타나지 않습니다. 누락 된 것이 있습니까? 아니면이 버그입니까?
public class TestController : ApiController
{
[EventSource(Name = "TestSource")]
public class TestSource : EventSource
{
public static readonly TestSource Log = new TestSource();
public TestSource() : base()
{
}
public void LogMe(string msg)
{
WriteEvent(1, msg);
}
}
public IEnumerable<string> Get()
{
TestSource.Log.LogMe("Hello!");
return new string[] {"value1", "value2"};
}
}
(.이 매개 변수가없는 생성자를 사용하고 있기 때문 버전이 작동)
실행하려는 전체 코드를 추가하십시오. – Sulyman
LogMe에 [Event] 속성을 추가하십시오. – magicandre1981
EventAttribute를 추가해도 변경되지 않습니다. –