监视远程计算机上的ETW日志
本文关键字:ETW 日志 计算机 监视 | 更新日期: 2023-09-27 17:59:07
使用Microsoft.Diagnostics.Tracing.TraceEvent库可以在local machine
上轻松处理ETW日志,但对于remote server
,真的有同样的方法吗?这就是我如何在本地机器上获取感兴趣的事件。真正感兴趣的是,在为不同的机器生成事件的情况下,如何实现相同的结果。
public LoggingEventArgs ListenForEvent(string eventName, int level, int maxWaitTimeInSec = 30)
{
if (!(TraceEventSession.IsElevated() ?? false))
{
_logger.Error("To turn on ETW events you need to be Administrator.");
return null;
}
LoggingEventArgs result = null;
_logger.Info("Creating a '{0}' session", _sessionName);
using (var session = new TraceEventSession(_sessionName))
{
_timer = ConstructTimerForSession(session, maxWaitTimeInSec);
TargetEventReceived += delegate (object sender, LoggingEventArgs e)
{
//if level is not negative, check for specific level of incoming event.
//Otherwise track all levels
bool condition = level > 0 ? e.Level == level : true;
if (condition)
{
result = e;
StopListeningForEvents(session);
}
};
AddCallbackForProviderEvent(session, _providerName, eventName);
StartListeningForEvents(session, _providerName, _timer);
}
return result;
}
这可能不是您想要的,但您最好使用语义日志应用程序块(SLAB)进程外选项,该选项将在远程机器上安装代理。然后SLAB进程可以将日志写入远程SQL服务器或远程文件。