在webroles.cs中添加跟踪侦听器,因为web.config未配置WebRole进程

时间:2015-03-16 07:22:34

标签: azure-sdk-.net

以下代码在azure sdk 2.3中没有任何问题 - WebRole.cs: Trace.Listeners.Add(new DiagnosticMonitorTraceListener());

此外,web.config文件中记录以下内容:

但是,自从我将azure sdk升级到2.5后,WebRole.cs代码(如上所述)开始抛出错误。

我发现由于以下原因,这种情况正在发生 - 在Azure SDK 2.3中:DiagnosticMonitorTraceListener继承自TraceListener 在Azure SDK 2.5中:DiagnosticMonitorTraceListener继承自Microsoft.Cis.Eventing.Listeners.RDEventMonitoringAgentListener

有人可以为此问题提出解决方案吗

1 个答案:

答案 0 :(得分:2)

您可以创建自己的包装类,该类继承自抽象类TraceListener。 e.g:

public class MyTraceListener : TraceListener
{
    private readonly DiagnosticMonitorTraceListener _traceListener= new DiagnosticMonitorTraceListener();

    public override void Write(string message)
    {
        _traceListener.Write(message);
    }

    public override void WriteLine(string message)
    {
        _traceListener.WriteLine(message);
    }
}

然后,您可以以传统方式添加此侦听器:

System.Diagnostics.Trace.Listeners.Add(new MyTracelistener());

更新:我发现此问题的真正原因并非DiagnosticMonitorTraceListener从其他类继承,但您可能缺少对 MonAgentListener 的引用。您应该能够通过项目的“添加引用”对话框添加对此DLL的引用。在我添加了Assembly之后,我可以将DiagnosticMonitorTraceListener添加为没有包装器的TraceListener对象,即

System.Diagnostics.Trace.Listeners.Add(new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener());