我以工作者角色托管了一堆WCF服务,我正在部署到Azure。问题是标准跟踪日志记录没有显示在Azure存储表中。
在代码中 - 我使用
Trace.TraceInformation("Something")
在.csdef中,我有默认
<Imports>
<Import moduleName="Diagnostics" />
</Imports>
在.csfg中我有
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="CONNECTION_STRING_THAT_WORKS_FOR_OTHER_ROLE" />
</ConfigurationSettings>
在wadcfg中,我有
<Logs bufferQuotaInMB="1024" scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Verbose" />
此设置适用于我正在部署的辅助角色,它可以很好地记录在WADLogsTable中。但这个不是。有什么指针吗?
答案 0 :(得分:0)
您是如何设置DiagnosticMonitorTraceListener的,以及您在哪个进程中进行Trace.TraceInformation调用?我通常在app.config中看到DiagnosticMonitorTraceListener中的这个,但Trace.TraceInformation调用正在其他一些进程中发生。您必须在.config文件中(或通过TraceListeners.Add代码中)设置DiagnosticMonitorTraceListener,以用于进行Trace.TraceInformation调用的进程。如果这不能解决问题,那么我通常会采取三种方法来解决此问题:
答案 1 :(得分:0)
我们稍后通过修改Azure项目而不是基础webrole来解决这个问题:
1 - 将文件webrole.cs添加到项目中,其中包含以下内容:
public class WebRole : RoleEntryPoint
{
public override bool OnStart()
{
return base.OnStart();
}
}
2 - 这是同一个项目的app.config:
<system.diagnostics>
<trace>
<listeners>
<add name="AzureDiagnostics" type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<filter type="" />
</add>
</listeners>
</trace>
</system.diagnostics>
为我们解决了这个问题