Диагностическая конфигурация Azure из отдельной сборки

Мы разрабатываем несколько приложений на основе Azure на C# и пытаемся централизовать некоторый общий код в служебной библиотеке. Одной из общих функций является настройка диагностического мониторинга.

Мы создали класс, упрощающий настройку сбора диагнозов, переноса логов и т. д.

Основная проблема, с которой мы сталкиваемся, заключается в том, что когда мы запускаем наш код, когда класс находится в сборке, отличной от WebRole или WorkerRole, диагностическая информация никогда не собирается и не передается в хранилище таблиц Azure. Если мы переместим класс в тот же проект, что и роль Web/Worker, то все будет работать как положено.

Есть ли что-то, что либо DiagnosticMonitor.GetDefaultInitialConfiguration(); или DiagnosticMonitor.Start(StorageConnectionStringKey, _diagConfig); не нравится быть в другой сборке? Я в тупике!

Любое понимание будет оценено.

Спасибо, Мэтт


person Matt Calhoun    schedule 16.02.2012    source источник


Ответы (1)


Какая часть здесь не работает? Журналы трассировки не передаются? Кажется, это то, с чем у большинства людей есть проблемы.

Мы делаем что-то подобное и не имеем никаких проблем. Как правило, когда вы не видите передачи данных, это происходит потому, что текущий процесс, в котором настраивается прослушиватель, не всегда совпадает с процессом, в котором происходит трассировка (особенно при динамическом добавлении в коллекцию прослушивателей трассировки). Примечательно, что многие пользователи обнаруживают эту проблему с веб-приложениями в Windows Azure.

Что вы ожидаете увидеть в переводе? Счетчики производительности? Следы? Журналы событий? и т. д.

person dunnry    schedule 16.02.2012
comment
На самом деле мы настраиваем трассировку, счетчики производительности и журналы событий. Ни один из них не работает. По сути, мы переработали код, чтобы взять DefaultInitialConfiguration в качестве зависимости от конструктора, и сделали вызов DiagnosticMonitor.Start из OnStart (вместо библиотеки), и все остальное заработало. - person Matt Calhoun; 29.02.2012