Я пытался настроить ведение журнала трассировки на некоторое время, и я просто не могу заставить его работать правильно. Это не помогает им так много неправильных/устаревших статей по этой теме. Но, пожалуйста, кто-нибудь даст мне хорошую и практичную настройку для отслеживания трассировки и просмотра Azure (1.6)
Все, что я хочу сделать, это возможность захвата и просмотра сообщений трассировки из моего приложения.
Я начал со стандартного DiagnosticMonitorTraceListener, но это заканчивается в хранилище таблиц. Я не могу для жизни понять, как я должен взаимодействовать с журналами в хранилище таблиц. В Visual Studio я могу "просматривать" его, но это очень громоздко, чтобы использовать его, это практично бесполезно. Нет сортировки, приходится писать громоздкие фильтры даты, которые в половину времени не работают.
Пользовательские журналы кажутся подходящими. Я много работал с log4net, поэтому я выбрал его. Вы можете перенаправить log4net на трассировку, но затем вы получите то же дерьмовое хранилище таблиц. Пользовательский файл журнала это. Теперь я уже смущен, если это поддерживается или нет. В некоторых статьях упоминаются диагностические блокировки файлов, вызывающие всевозможные проблемы. Не уверен, что это все еще проблема, независимо от того, что это странно, зачем предоставлять возможность передачи пользовательских журналов, когда вы не можете читать/записывать журналы? Во всяком случае, у меня не было проблем с записью в журнал (что я заметил).
Настройка выполняется в соответствии с статьями MSDN (с лишним расплывчатым и очень распространенным образом). Определите элемент LocalStorage в ServiceDefinition (128Mb). Добавить передачу журнала каталога при запуске роли. Идти. Кажется, это работает. До тех пор, пока какое-то время роль во время перезапуска с помощью generalQuota не будет достаточно большой, а роль просто умирает и отказывается подниматься. Внутри 4080Mb есть много свободного места, это просто не имеет смысла.
Снова последовали статьи об увеличении квоты, но это, казалось, еще хуже. Установите для параметра "Диагностический магазин" значение 8 ГБ в ServiceDefinition. Не работает. Все еще дерьмо, только с большим числом. Кроме того, не рекомендуется использовать значение CommonQuota равным 8 ГБ. По какой-то причине установка на чистом изображении работает нормально, но когда есть перезапуск или обновление, он решает вычислить квоту по-разному. Независимо от размера хранилища DiagnosticsStore, "вычисленное" значение всегда имеет значение CommonQuota + Log4Net LocalStorage. Я ничего не делаю, это меняет. Чрезвычайно расстраивает, как кажется, работает, только чтобы умереть через некоторое время.
Я также пробовал диагностику .wadcfg, но не смог заставить Azure забрать их. Я убедился, что они были скопированы в корневую папку вывода и удалены любые изменения на мониторе из моего кода. Nada, zip... просмотрел все файлы журналов, которые я мог найти в экземпляре. Ни одного упоминания или ошибки нигде.
Почему так сложно на Azure? Журналы трассировки - это самый базовый инструмент ведения журнала для любого приложения. Это действительно убивает опыт Azure.