如何注册EventSource etw提供程序C#并将输出捕获到日志文件中。?
我创建了一个从基类EventSource(事件提供程序)派生的“Logger”类。我用这个来处理我的申请。现在,为了查看应用程序记录的跟踪消息,我使用perfview GUI工具-首先注册我的事件提供程序“*Logger”,然后通过该工具启动收集过程。 收集完成后,我可以查看我记录的事件。这很好,但我需要自动化这个过程 在尝试自动化此过程时,我面临两个问题:如何注册EventSource etw提供程序C#并将输出捕获到日志文件中。?,c#,logging,etw,C#,Logging,Etw,我创建了一个从基类EventSource(事件提供程序)派生的“Logger”类。我用这个来处理我的申请。现在,为了查看应用程序记录的跟踪消息,我使用perfview GUI工具-首先注册我的事件提供程序“*Logger”,然后通过该工具启动收集过程。 收集完成后,我可以查看我记录的事件。这很好,但我需要自动化这个过程 在尝试自动化此过程时,我面临两个问题: 如何注册我的事件提供程序(最好只使用c#libraries或Microsoft提供的CLI工具[不想使用任何第三方工具或库来完成此操作])
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Diagnostics.Tracing;
使用系统线程;
命名空间事件日志
{
班级计划
{
静态void Main(字符串[]参数)
{
Logger log=Logger.GetLogger();
对于(int i=0;i<100000;i++)
{
WriteError(“记录一些严重错误”,i);
日志写入警告(“日志警告”,i);
}
}
}
///
///记录器写入实例。
///
///
类记录器:EventSource
{
///
///
///
静态专用记录器_log;
///
///只能创建记录器的一个实例。
///
公共静态记录器GetLogger(){
如果(_log==null)
返回(_log=new Logger());
其他的
返回日志;
}
专用记录器()
:base()
{
}
[事件(101,Message=“应用程序失败消息:{0}”,Level=EventLevel.Error)]
public void WriteError(字符串message1,int值){
WriteEvent(101,message1,value);
}
[事件(102,Message=“应用程序警告消息:{0}”,Level=EventLevel.Warning)]
公共无效写警告(字符串消息,int值)
{
WriteEvent(102,消息,值);
}
}
}
使您能够捕获和处理ETW跟踪。它了解EventSource,因此没有理由注册任何内容。请参阅和。使您能够捕获和处理ETW跟踪。它了解EventSource,因此没有理由注册任何内容。看,还有
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);
}
}
}