Служба приложений Azure: доступ к журналам со всех масштабируемых машин.

При развертывании Azure AppService выполняется приложение WebAPI, масштабированное до 6 экземпляров.

Наше приложение WebAPI записывает журналы диагностики с помощью NLog и File appender. Есть ли способ проверить эти файлы журналов через портал Azure или Kudu?

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

Есть ли способ получить доступ к файлам журнала на любом из других 5 экземпляров?


person Howard Hoffman    schedule 09.02.2017    source источник
comment
На самом деле служба приложений использует общее хранилище для файлов, поэтому все экземпляры должны иметь одно и то же хранилище. Вы уверены, что другие экземпляры записывают файлы, которые вы не видите?   -  person juunas    schedule 09.02.2017
comment
Я знаю, что код отправляет файлы журнала в подпапку журналов, которая находится в папке bin. Я вижу в нем контент - и он растет по мере того, как мы делаем запросы к API - хорошая корреляция. Вы говорите, что один файл, из которого я читаю (например, загруженный из Kudu / DebugConsole), на самом деле является файлом, который содержит единый контент из всех 6 экземпляров?   -  person Howard Hoffman    schedule 09.02.2017


Ответы (2)


Есть ли способ получить доступ к файлам журнала на любом из других 5 экземпляров?

Путь к файлам журнала является общим для всех экземпляров. Для получения дополнительных сведений см. Azure WebApp SandBox и Доступ к файлам Azure WebApp.

Каждое веб-приложение Azure имеет домашний каталог, который хранится / поддерживается службой хранилища Azure. В этом сетевом ресурсе приложения хранят свой контент. Домашний каталог является общим для всех экземпляров, поэтому все экземпляры видят один и тот же каталог.

person Tom Sun - MSFT    schedule 10.02.2017
comment
Это правильно. Что еще круто, так это то, что если я добавлю NLog logger, подключенный к System.Diagnostics.Trace (например, <target xsi:type="Trace"... />), я смогу увидеть свой вывод журнала NLog в потоке журнала. Я вижу сообщения журнала со всех машин в одном потоке журнала. - person Howard Hoffman; 13.02.2017

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

Если вы действительно хотите, чтобы NLog оставался, вы можете настроить имена журналов, включив $ {machinename} или processid

person albattran    schedule 12.02.2017