Подтвердить что ты не робот

Предпочтительный способ входа в .Net, развернутый до Azure

Не могли бы вы сказать это - самый оптимальный способ простого обычного ведения журнала в развернутом приложении Azure?

Если вам нравится большая работа, чтобы на самом деле добраться до файлов и т.д.

Что сработало лучше всего для вас?

4b9b3361

Ответ 1

Мы используем сборку в диагностике, которая записывает в хранилище таблиц Azure. Каждый раз, когда нам нужно сообщение, записанное в журнал, это просто "Trace.WriteLine(...)".

Поскольку журналы записываются в Azure Table Storage, у нас есть процесс, который будет загружать сообщения журнала и удалять их из хранилища таблиц. Это хорошо работает для нас, но я думаю, что это, вероятно, зависит от приложения.

http://msdn.microsoft.com/en-us/library/gg433048.aspx

Надеюсь, что это поможет!

[Обновить]

public void GetLogs() {
        int cnt = 0;
        bool foundRows = false;
        var entities = context.LogTable;
        while (1 == 1) {
            foreach (var en in entities) {
                processLogRow(en);
                context.DeleteObject(en);
                cnt++;
                try {
                    if (cnt % 100 == 0) {
                        foundRows = true;
                        context.SaveChanges(SaveChangesOptions.Batch);
                    }
                } catch (Exception ex) {
                    Console.WriteLine("Exception deleting batch. {0}", ex.Message);
                }
            }
            if (!foundRows)
                break;
            else {
                context.SaveChanges(SaveChangesOptions.Batch);
            }
            foundRows = false;
        }
        Console.WriteLine("Done! Total Deleted: {0}", cnt);
    }

Ответ 2

Добавление бит в ответ Brosto: для настройки Azure Diagnostics требуется всего несколько строк кода. Вы определяете, какой уровень вы хотите захватить (подробный, информационный и т.д.). и как часто вы хотите выталкивать локально-кэшированные сообщения журнала в хранилище Azure (обычно я занимаюсь примерно 15-минутными интервалами). Журнальные сообщения из всех ваших экземпляров затем агрегируются в одну и ту же таблицу, легко просматриваются (или загружаются), со свойствами, определяющими роль и экземпляр.

Существуют дополнительные инструкции трассировки, такие как Trace.TraceError(), Trace.TraceWarning() и т.д.

Вы даже можете создать прослушиватель трассировки и наблюдать за выходом журнала в почти реальном времени на локальном компьютере. Azure AppFabric SDK Образцы zip содержат образец (в\ServiceBus\Scenarios\CloudTrace) для этого.

Ответ 3

Для регистрации ошибок наилучшее решение, которое я видел, это Elmah. Для этого требуется база данных SQL, но это инструмент регистрации ошибок, который помогает диагностировать проблемы. Он отлично работает на Azure.

Ответ 4

Для всех моих сайтов Azure я использую пользовательские ведение журнала для таблиц Azure. Хотя немного больше работы, я считаю, что это дает мне больше контроля над информацией, которая хранится. Как и выше Brosto, лучше всего, чтобы локальный процесс периодически загружал журналы в вашу локальную систему. Если вы выведете класс из TableServiceEntity, вы можете определить структуру, содержащую все поля, которые вы хотите зарегистрировать, и использовать один и тот же класс для извлечения данных в локальном приложении, которое извлекает журналы. Я поддерживаю некоторые примеры кода для этого на ведении журнала с использованием страницы хранения таблиц Azure, если он какой-либо помощи кому-либо.

Одной из проблем, с которыми я столкнулся с использованием метода Trace.Writeline, является то, что журналы хранятся в локальном экземпляре и периодически переносятся в хранилище таблиц Azure. Учитывая временный характер экземпляра Azure, все локальные хранилища должны быть в лучшем случае считаться временными. Поэтому всегда есть окно для потери данных журнала, когда оно хранится на локальном диске.

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

Ответ 5

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

Хотя использование функций Trace напрямую работает нормально, я бы предложил использовать структуру ведения журнала, такую ​​как NLog или log4net. Это дает вам дополнительную гибкость для отправки некоторых сообщений Trace/Azure Diagnostics и других в локальное хранилище.

Например, я добавил тонну отслеживания трассировки для отслеживания проблемы с зависанием нитей. Я обнаружил, что предоставление корневого пути к файлу, такого как "\ ServiceLogs\MyLog.txt", будет выводиться на диск F: на экземпляре. Поэтому я направил все это в файловую систему экземпляра, а не в таблицы Diagnostics. Вам нужно дистанционно в каждом экземпляре увидеть эти журналы, но в этом случае это хороший компромисс.

Ответ 7

В то время как традиционная структура ведения журналов Структура истории может действительно помочь, когда вы действительно хотите читать свои журналы, она "делает" вы пишете все журналы (и добавить другую соответствующую информацию) в контексте, поэтому, когда вам нужно прочитать его позже, вы получите все, что вам нужно.

Он также поддерживает сохранение журналов в хранилище таблиц Azure.

В это сообщение в блоге.