Как регистрировать исключения, обнаруженные в службе WCF, развернутой в Azure - PullRequest
8 голосов
/ 21 июня 2010

Как лучше всего регистрировать исключения, захваченные в службе WCF, размещенной в облаке?

1 Ответ

11 голосов
/ 21 июня 2010

Вы можете воспользоваться System.Diagnostics и записать свои исключения с Trace.traceError(). Затем вы можете запланировать, что эти операторы трассировки будут периодически выгружаться в хранилище таблиц (может быть, раз в минуту?), Где вы затем сможете получать и анализировать операторы трассировки либо с помощью локального приложения, либо с приложением, работающим в рабочей роли.

Например: в OnStart () вашей рабочей роли настройте Диспетчер диагностики для загрузки данных трассировки в хранилище таблиц. В этом примере он загружается каждую минуту в учетную запись хранения, указанную в DiagnosticsConnectionString (по умолчанию она настроена для указания на хранилище dev):

var diag = DiagnosticMonitor.GetDefaultInitialConfiguration();
diag.Logs.ScheduledTransferLogLevelFilter = LogLevel.Information;
diag.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1.0);
DiagnosticMonitor.Start("DiagnosticsConnectionString", diag);

Затем, всякий раз, когда вы сталкиваетесь с исключением в вашей службе WCF, регистрируйте его:

System.Diagnostics.Trace.TraceError("WCF Error caught: ...");

Наконец, либо напишите некоторый код для запроса диагностических данных, либо используйте что-то вроде нового встроенного обозревателя хранилищ Visual Studio для просмотра и устранения ошибок.

...