教你使用Diagnostics捕获Windows事件

日期: 2010-06-22 来源:TechTarget中国 英文

  通过查看Windows事件,我们可以了解系统运行中产生的错误或警告,对日常运营监控提供了重要的数据来源,本文简要介绍一下如何使用Windows Azure Diagnostics捕获由Hosted Web Core产生的Windows事件,下面是代码:

    var cfg = DiagnosticMonitor.GetDefaultInitialConfiguration();
    // HWC uses the event log to indicate what’s broken.
    // This config setting is really handy when debugging bad config.
    cfg.WindowsEventLog.DataSources.Add(“Application!*[System[Provider[@Name=’HostableWebCore’]]]”);
    diagnosticMonitor = DiagnosticMonitor.Start(“DiagnosticsConnectionString”, cfg);

  当你添加一个Windows事件日志数据源时,你需要给你想记录的事件指定一个XPath选择原则。使用Windows Azure Diagnostics,你可以收集以下类型的诊断数据:

数据源

默认配置

支持的角色类型

Windows Azure 日志

默认要收集,需要在 web.config app.config 中增加跟踪监听器

Web和Worker角色

IIS 7.0日志

默认要收集

仅限Web角色

Windows诊断基础日志

默认要收集

Web和Worker角色

失败的请求日志

默认不收集

仅限Web角色

Windows事件日志

默认不收集

Web和Worker角色

性能计数器

默认不收集

Web和Worker角色

崩溃转储

默认不收集

Web和Worker角色

自定义错误日志

默认不收集

Web和Worker角色

  要启用对Windows事件日志的收集,要获得默认的初始配置,然后向配置中加入Windows事件日志数据源,使用一个XPath表达式指定你想要收集的事件,下面的代码显示了如何配置诊断监听器收集“系统”事件:

    public override bool OnStart()
    {
        DiagnosticMonitorConfiguration diagConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
    
        // Add event collection from the Windows Event Log
        diagConfig.WindowsEventLog.DataSources.Add(“System!*”);
        // Start diagnostics with this custom local buffering configuration
        DiagnosticMonitor.Start(“DiagnosticsConnectionString”, diagConfig);
        return base.OnStart();
    }

  注意,Windows Azure Diagnostics不能读取Windows事件日志中的“安全”事件,因为运行Windows Azure中的服务使用的账号往往没有读取安全事件的权限。

  在Windows事件查看器中,我们可以创建一个自定义视图。

Azure捕获Windows事件

  图 1 过滤显示Hosted Web Core事件源

  切换到XML标签,可以看到XPath格式的事件过滤器。

Azure捕获Windows事件

  图 2 XPath格式的事件过滤器

  你也可以手工修改一下,然后将其传递给WindowsEventLog.DataSource.Add 。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国