Ведение журнала Azure с помощью веб-службы WebGet - PullRequest
0 голосов
/ 16 февраля 2011

У меня был существующий веб-сервис WCF, который содержит три обработчика WebGet в одном файле .cs. Эти обработчики делают соответствующие вызовы другим файлам .cs для обработки действия.

Теперь я создал проект Azure на основе этого веб-сервиса, создав проект Azure и добавив существующее решение. Теперь я хотел бы использовать Trace.WriteLine для ведения журнала. Я настроил файлы .cscfg, .csdef и Web.config, чтобы разрешить вход в хранилище Azure.

Однако я не знаю, где настроить следующую информацию:

//Get the default configuration
DiagnosticMonitorConfiguration dmc = DiagnosticMonitor.GetDefaultInitialConfiguration();

//Set the schedule to transfer logs every 10 mins to the storage                
dmc.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(10);

//Start Diagnostics Monitor with the storage account configuration
DiagnosticMonitor.Start("DiagnosticsConnectionString",dmc);

Я попытался поместить его в отдельный внутренний статический класс, содержащий метод логгера, но я получаю RoleEnvironmentException: ошибка при запуске веб-службы.

Поскольку у меня нет метода OnStart () в моем классе веб-службы с тремя WebGets, куда я могу поместить его, чтобы убедиться, что у меня правильно запущен монитор диагностики, чтобы я мог использовать Trace.WriteLine? 1010 *

Ответы [ 3 ]

2 голосов
/ 17 февраля 2011

Этот код конфигурации не нужно специально устанавливать для каждого класса, в котором выполняется код, его просто нужно запускать один раз, когда запускается ваша веб-роль.Обычное место для этого в RoleEntryPoint.Поскольку вы создали этот проект, а затем добавили его в свой облачный проект, у вас не будет RoleEntryPoint с методом OnStart(), который вы можете переопределить.Но это не значит, что у вас не может быть одного.

У вас есть два варианта:

  1. Просто добавьте новый класс в ваш веб-проект, который наследуется от Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint ипереопределите OnStart() для настройки вашей диагностики (это мой предпочтительный вариант)
  2. Поместите тот же код где-нибудь еще в вашем коде так, чтобы он запускался только один раз, как Application_Start в global.asax
1 голос
/ 07 сентября 2012

Позднее наблюдение за будущими зрителями ... В моем случае я включил Диагностику в> Роли>. Поэтому, когда я добавил DiagnosticMonitor.Start в Global.aspx> Application_Start, он в основном запустился снова. Поскольку я хотел настроить конфигурацию, я просто отключил встроенную функцию диагностики в конфигурации роли.

1 голос
/ 17 февраля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...