Windows Azure Diagnostics Monitor Trace Listener を使用して、トレース ログを Azure Diagnostics に送信します。多数の詳細なログがあるため、単にデバッグするためにこれらを Azure Diagnostics に送信することを停止することにしました。
ただし、ScheduledTransferLogLevelFilter
プロパティを設定すると、Azure Diagnostics によって無視されるようです。そのため、すべてのVerbose
ログは引き続き出荷されます。
使用する構成セクションは次のとおりです。
<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>
コードは次のとおりです。
var config = DiagnosticMonitor.GetDefaultInitialConfiguration();
config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Information;
config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1d);
DiagnosticMonitor.Start(CONNECTION_STRING, config);
他の誰かがこの問題に遭遇しましたか? 詳細なエントリを送信するトレース ログを停止するために設定する必要がある構成値のセットの追加セクションはありますか?
編集:
Avkash Chauhan は私を正しい道に導いてくれました。構成を明示的に保存する必要があります。最終的なコードは次のようになり、期待どおりに機能します。
public static void StartLogging()
{
var cloudStorageAccount =
CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(DEFAULT_CONNECTION_STRING));
var roleInstanceDiagnosticManager =
cloudStorageAccount.CreateRoleInstanceDiagnosticManager(
RoleEnvironment.DeploymentId,
RoleEnvironment.CurrentRoleInstance.Role.Name,
RoleEnvironment.CurrentRoleInstance.Id);
var config = roleInstanceDiagnosticManager.GetCurrentConfiguration();
config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Information;
config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1d);
roleInstanceDiagnosticManager.SetCurrentConfiguration(config);
// Start the diagnostic monitor with the modified configuration.
DiagnosticMonitor.Start(DEFAULT_CONNECTION_STRING, config);
}