2014-09-17 2 views
8

Как мы можем регистрироваться на Azure с зернистостью & эквивалент управления log4net? Мы используем log4net в наших веб-приложениях, которые мы запускаем в IIS, и это очень хорошо работает для нас. Это лучшее на Лазуре тоже?регистрация на Azure

Мы абсолютно предпочитаем файлы журнала (as opposed to database entries), но если в Azure есть что-то, что лучше работает, я открыт для улучшений. То, как Trace пишет в таблицу в Azure, ужасно - мы определенно не хотим этого.

Причина, по которой я предпочитаю файлы журналов, очень легко увидеть, что произошло в последовательности, что мне нужно в 99% случаев.

Это для веб-приложения Azure, которое будет иметь несколько экземпляров. Это нормально, если журналы различаются для каждого экземпляра.

спасибо - dave

+0

Является ли это лазурным сайтом или облачным сервисом? Для веб-сайтов вы можете просто входить в файл. Просмотр веб-сайта с помощью Visual Studio позволит вам легко загрузить файл журнала. –

+0

@BrendanGreen да веб-сайт, а не облачный сервис. Это так просто - просто старая запись log4net в файл? Если да, есть ли ссылка, показывающая, как настроить расположение файла журнала? –

+0

@BrendanGreen - ps, напишите все это как ответ, и я рад отметить его как решение. –

ответ

10

Это довольно прямолинейно. Я использую следующий log4net конфигурации сбросить файл журнала в корневой папке веб-приложения (легко изменить в подпапке):

<log4net> 
    <root> 
    <level value="DEBUG" /> 
    <appender-ref ref="LogFileAppender" /> 
    </root> 
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" > 
    <param name="File" value="my_web.log" /> 
    <param name="AppendToFile" value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="10MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%date{yyyy-dd-MM HH:mm:ss.fff} [%thread] %-5level %logger.%method [%property{NDC}] - %message%newline" /> 
    </layout> 
    </appender> 
</log4net> 

Я тогда инспектировать файл журнала, когда это необходимо непосредственно из Visual Studio (дважды щелкнув файл загружает его) Обозреватель серверов:

Azure Website via Server Explorer

+1

Это безопасно - просто поставить значение = "my_web.log"? Я беспокоюсь, что папка по умолчанию небезопасна в веб-приложении. –

+0

Это зависит от того, как вы настраиваете свой сайт. Так же, как 'web.config', я заблокировал' * .log' от обслуживания сайтом. В качестве альтернативы вы также можете указать подпапку для файлов журнала, таких как 'logs \ my_web.log' –

10

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

Лучшее решение - использовать диагностику Azure в сочетании с log4net (будет работать одинаково для других механизмов ведения журнала, таких как NLog). Процесс суммируется здесь:

  1. Настроить локальное хранилище как место на экземпляре роли (виртуальной машине), где записаны файлы журналов.

  2. Добавьте элемент в файл diagnostics.wadcfg, чтобы указать диагностику Azure для создания и использования контейнера в хранилище blob.

  3. Добавьте элемент внутри, чтобы указать диагностику Azure для отслеживания папки регистрации в локальном ресурсе LogStorage.

Таким образом, локально сохраненные журналы будут скопированы в хранилище памяти.

Полная история здесь: http://justazure.com/microsoft-azure-diagnostics-part-1-introduction/

+1

Упрощен для наблюдения за сохранением, но ваше решение предназначено для облачных сервисов; OP работает на сайтах Azure. – BenV

+0

Мы успешно использовали тот же подход, чтобы интегрировать сайты Azure с диагнозом Azure. Дайте мне знать, если вы все еще сталкиваетесь с проблемами и можете перейти к более подробным сведениям. –

+0

@StefanIancu У меня есть простой веб-приложение ASP NET MVC. Я установил учетную запись хранилища, но у меня нет файла с именем «diagnostics.wadcfg». Также это странно, в моем мониторинге хранилища говорится, что у меня 6500 запросов в TABLE, но когда я нажимаю на таблицы, в нем говорится, что «Нет таблиц». – Jaanus

0

Лучший способ регистрации данных для виртуальных машин Azure или Cloud Services является использование Log4Net для входа на диск, а также информацию журнала из всех экземпляров на Лазурном счет хранения. Преимущество в том, что вы получите более надежное решение. Если по какой-либо причине Azure Diagnostics ломается во время живого сайта, вы все равно можете удалять любые экземпляры и пытаться диагностировать проблему. Для других сервисов, таких как веб-приложения, где вы не можете удалять данные из экземпляров, достаточно зарегистрировать информацию на учетных записях Azure Storage.

  1. Вход на диск: Если у вас есть облачный сервис, веб-роли/работника роль будет иметь только разрешение на запись на диск приложения, который достаточно мал, как показано here и here. Если вы довольны регистрацией не более 200-300 МБ дискового пространства, тогда вы добры. Однако, если вы хотите зарегистрировать больше, тогда лучше всего использовать концепцию LocalStorage, которая позволит вам зарезервировать место на диске C, которое имеет огромное пространство (для Small PaaS VMs Drive C имеет 225 ГБ примерно в то время как привод приложения (E:/F :) имеет 1,5 ГБ пространства). Вы можете узнать, как использовать локальное хранилище here.
  2. Регистрация на Лазурный счет хранения: Вам необходимо будет активировать Диагностику Azure, как показано на рисунке here. Кроме того, вам нужно будет добавить Trace Appender в Log4Net, как показано на рисунке here.

Вам потребуется полдня или день для настройки и тестирования, но я надеюсь, что это ответит на ваш вопрос.

Смежные вопросы