我写了一小段代码,通过不同的按钮点击,可以收集不同类型的日志数据。但是,当我运行这段代码时,通常在通过服务器资源管理器检查时不会反映记录的数据,即使记录它们,也可以在很长一段时间后(15-20分钟)查看它们。在编写这段代码时,我是否有任何错误。这段代码在下面给出::
DiagnosticMonitorConfiguration diagMonitorConfiguration;
RoleInstanceDiagnosticManager roleInstanceDiagnosticManager;
protected void Page_Load(object sender, EventArgs e)
{
// Get the default initial configuration for DiagnosticMonitor.
diagMonitorConfiguration = DiagnosticMonitor.GetDefaultInitialConfiguration();
// Configures the transfer period for basic windows azure logs
diagMonitorConfiguration.Logs.ScheduledTransferPeriod = TimeSpan.FromSeconds(10);
// Configures the log type to be Verbose
diagMonitorConfiguration.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
// Start the diagnostics monitor
//DiagnosticMonitor.Start(CloudStorageAccount.DevelopmentStorageAccount, diagConfig);
//CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString"));
CloudStorageAccount storageAccount = CloudStorageAccount.DevelopmentStorageAccount;
roleInstanceDiagnosticManager = storageAccount.CreateRoleInstanceDiagnosticManager(RoleEnvironment.DeploymentId, RoleEnvironment.CurrentRoleInstance.Role.Name, RoleEnvironment.CurrentRoleInstance.Id);
//DiagnosticMonitorTraceListener tmpListener = new DiagnosticMonitorTraceListener();
//System.Diagnostics.Trace.Listeners.Add(tmpListener);
}
// Used to trace custom warning messages
protected void btnWarning_Click(object sender, EventArgs e)
{
// tracing user message as a warning
System.Diagnostics.Trace.TraceWarning("WARNING ENCOUNTERED :" + TextBoxName.Text);
}
// tracing custom error messages
protected void btnError_Click(object sender, EventArgs e)
{
// To log the user message as an error
.......TraceError("ERROR ENCOUNTERED :" + TextBoxName.Text);
}
// tracing custom information messages
protected void btnInformation_Click(object sender, EventArgs e)
{
// To log the user message as mere information
.........TraceInformation("INFORMATION SENT :" + TextBoxName.Text);
}
// used to enable diagnostic infrastructure logs to be collected
protected void btnEnableInfrastructure_Click(object sender, EventArgs e)
{
// configuring the type and transfer period for the Infrastructure logs
diagMonitorConfiguration.DiagnosticInfrastructureLogs.ScheduledTransferLogLevelFilter = some filter;
diagMonitorConfiguration.DiagnosticInfrastructureLogs.ScheduledTransferPeriod = SOME TIME PERIOD
// Update the configuration setting for the diagnostic manager
roleInstanceDiagnosticManager.SetCurrentConfiguration(diagConfig);
Thread.Sleep(5000);
}
// used to enable crash dumps for the application
protected void btnEnableCrashDumps_Click(object sender, EventArgs e)
{
//enabling crash dumps
CrashDumps.EnableCollection(true);
// Update the configuration setting for the diagnostic manager
roleInstanceDiagnosticManager.SetCurrentConfiguration(diagConfig);
Thread.Sleep(5000);
}
// used to enable the collection windows event logs
protected void btnEnableEventLogs_Click(object sender, EventArgs e)
{
//Configuring the Windows Event logs
diagMonitorConfiguration.WindowsEventLog.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
// two types of events, application and system data are logged
diagMonitorConfiguration.WindowsEventLog.DataSources.Add("some source");
// the time interval is configured as 5 seconds
diagMonitorConfiguration.WindowsEventLog.ScheduledTransferPeriod = some time period;
// Update the configuration setting for the diagnostic manager
roleInstanceDiagnosticManager.SetCurrentConfiguration(diagConfig);
Thread.Sleep(5000);
}
protected void btnEnablePerfCounters_Click(object sender, EventArgs e)
{
// configuring the performance counter data to be collected. processor time is collected
diagMonitorConfiguration.PerformanceCounters.DataSources.Add(new PerformanceCounterConfiguration()
{
THE REQD PARAMETERS
});
// similarly available memory data is also logged
diagMonitorConfiguration.PerformanceCounters.DataSources.Add(new PerformanceCounterConfiguration()
{
THE REQD PARAMETERS
});
// the scheduled time transfer is configured to 5seconds
diagMonitorConfiguration.PerformanceCounters.ScheduledTransferPeriod = some time period;
//DiagnosticMonitor.Start(CloudStorageAccount.DevelopmentStorageAccount, diagConfig); USED PREVIOUSLY
// Update the configuration setting for the diagnostic manager
roleInstanceDiagnosticManager.SetCurrentConfiguration(diagConfig);
Thread.Sleep(5000);
}
}
答案 0 :(得分:2)
答案 1 :(得分:1)
根据docs:
ScheduledTransferPeriod属性用于设置a的频率 数据缓冲区将本地日志记录数据传输到持久存储。通过 默认情况下,此属性未设置为任何数据缓冲区以防止 无意的存储成本。
您为此属性设置的值将向上舍入到最近 分钟。因此,您可以指定的最小传输时间为1 分钟。
答案 2 :(得分:0)
无法肯定地说,但您有多次拨打SetCurrentConfiguration()
。我上次检查时,你只能拨打一次。我不知道通过多次调用它会看到什么观察到的行为。我真的建议将所有诊断配置代码聚合到一个地方,可能在global.asax中,而不是分散在几个按钮处理程序中。