在WindowsAzure上把TranceLog和EventLog输出到Storage的方法
1、修改web.config启用一个Diagnostic监听器
<configuration>
<system.diagnostics>
<trace>
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
name="AzureDiagnostics">
<filter type="" />
</add>
</listeners>
</trace>
</system.diagnostics>
</configuration>
2、在OnStart函数中启动该Diagnostic监听器
public override bool OnStart()
{
DiagnosticMonitorConfiguration diagConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
//Trance log
diagConfig.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
diagConfig.Logs.ScheduledTransferPeriod = System.TimeSpan.FromMinutes(1);
//EventLog
diagConfig.WindowsEventLog.DataSources.Add("System!*");
diagConfig.WindowsEventLog.DataSources.Add("Application!*");
diagConfig.WindowsEventLog.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
diagConfig.WindowsEventLog.ScheduledTransferPeriod = System.TimeSpan.FromMinutes(1);
//Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString是需要在.cscfg文件中配置的Storage连接字符串
DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", diagConfig);
return base.OnStart();
}
3、在其他代码中输出TranceLog和EventLog。
//输出一条TranceLog到Storage中
Trace.WriteLine("WriteTaskList ...");
//输出两条EventLog到Storage中
EventLog eventApp2 = new EventLog("Application");
eventApp2.Source = "AzureTest App";
eventApp2.WriteEntry(count + " EventLog write(AzureTest App)");
EventLog eventSys2 = new EventLog("System");
eventSys2.Source = "AzureTest Sys";
eventSys2.WriteEntry(count + " EventLog write(AzureTest Sys)");
参考文章: 云诊断:控制 Windows Azure 中的日志记录与跟踪