SO의 이벤트 뷰어 작성에 대한 많은 주제가 있지만 필요한 항목을 찾지 못했습니다.계층 구조가있는 이벤트 로그에 쓰기
나는 이벤트 뷰어에서 새로운 이벤트 로그 범주를 만들려면 다음 코드를 :
string sSource = "MyWebService";
string sLog = "My Application";
string sMsg = "Error Message Goes here";
if (!EventLog.SourceExists(sSource))
{ EventLog.CreateEventSource(sSource, sLog); }
이 예상대로 작동하고 이벤트 뷰어에, 나는 다음과 같은 출력이 있습니다
따라서 이벤트 뷰어에 쓰는 것은 문제가되지 않지만 로그에 일부 계층을 만들려고 할 때 이 발생하면 문제가 발생합니다.
그래서, 나는 다양한 구성 요소에서 구성 응용 프로그램 작성했다고 가정하자 :
- MVC
- Web API
- Windows Service
을 다음 이벤트 뷰어를, 나는 Microft가하는 것처럼 모든 요소를 포함하는 사전을 만들려면 이 의미
나는 보이는 출력을하고 싶습니다 같은 :
- Application (directory)
- MVC (directory)
- Others (logs)
- Web API (directory)
- Demo (logs)
- Windows Service (directory)
- Authentication (logs)
,
나는 다음을 수행하려고했습니다 :
string sSource = "MyWebService";
string sLog = "My Application";
string sMsg = "Error Message Goes here";
if (!EventLog.SourceExists(sSource))
{ EventLog.CreateEventSource(sSource, sLog); }
if (!EventLog.SourceExists(sLog))
{ EventLog.CreateEventSource(sLog, "Web Service"); }
그러나 물론
, 이것은 작동하지 않았다.누구나 이벤트 뷰어에서 계층 구조를 만드는 방법을 알고 있습니까?
중요 사항 : 내 코드를 완전히 제어 할 수 있기 때문에 제 3 자 라이브러리를 사용하지 않아도됩니다.
답장을 보내 주셔서 감사합니다.하지만 제 질문으로는 코드 사용을 통제하고 싶습니다. 패키지 사용을 피하고 싶습니다. 나중에 패키지를 사용할 수는 있지만 먼저 작동 방식을 알고 싶습니다. :-) – Complexity
@Complexity : 그렇다면 P/Invoke를 사용하여 원시 ETW API를 호출하는 것이 좋습니다. 나는'EventSource' 코드를 들여다 보았고 꽤 복잡합니다. 원하는 것을하기 위해서도 ETW를 사용해야합니다. 여기에 API 문서 링크가 있습니다 : http://msdn.microsoft.com/en-us/library/windows/desktop/bb968803(v=vs.85). aspx –
흠, P/Invoke를하고 싶지 않아서, 너겟 패키지로 갈 수도 있습니다. – Complexity