监视远程计算机上的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;
    }

监视远程计算机上的ETW日志

这可能不是您想要的,但您最好使用语义日志应用程序块(SLAB)进程外选项,该选项将在远程机器上安装代理。然后SLAB进程可以将日志写入远程SQL服务器或远程文件。