2015-07-23 2 views
3

Изнутри приложения App.Net Web Api (версия 5) Я пытаюсь отправить журналы в LogEntries, но не могу. С тем же кодом и конфигурацией я могу успешно отправлять журналы с localhost.Не удается записать журнал в LogEntries из Azure Web App

Это код, я использую для отправки журналов (с NLog :)

private static Logger log = LogManager.GetCurrentClassLogger(); 

public static void LogString(string message) 
{ 
    log.Error(builder.ToString()); 
} 

Это конфигурация web.config:

<appSettings> 
    <add key="Logentries.Token" value="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" /> 
</appSettings> 

<nlog> 
<extensions> 
    <add assembly="LogentriesNLog" /> 
</extensions> 
<targets> 
    <target name="logentries" type="Logentries" debug="true" httpPut="false" ssl="false" layout="${date:format=ddd MMM dd} ${time:format=HH:mm:ss} ${date:format=zzz yyyy} ${logger} : ${LEVEL}, ${message}" /> 
</targets> 
<rules> 
    <logger name="*" minLevel="Debug" appendTo="logentries" /> 
</rules> 

Когда я запускаю это код на производстве как Azure Web App, я не вижу никаких журналов на консоли LogEntries. Когда я запускаю его на localhost, он запускается успешно.

Я также попытался сделать простой HTTP-запрос с классом WebRequest на google.com и мог получить 200 с сервера на Azure. Поэтому я думаю, что приложение Azure может иметь доступ к Интернету, но по каким-то причинам не может/не имеет доступа к серверам LogEntries.

Как я могу диагностировать это?

+0

Я рекомендую вам адрес электронной почты [email protected] - они всегда отвечают быстро! Благодаря! – JTBuchanan

ответ

0

Если вы находитесь на Azure WebSite, стандартного системного EventLog не существует. Таким образом, это может быть проблемой, с которой вы сталкиваетесь, не имея возможности применять журналы.

Вот detailed overview всех вариантов, которые доступны на сайтах Azure.

0

Извините, это немного устарело, но, возможно, для будущих читателей. У меня были следующие проблемы с получением LogEntries, работающих с Azure Webapps. 1) Документ не соответствует порядку настроек конфигурации; он считывает параметры портала Azure и настройки приложения только после того, как он проверял его собственный конфиг. Поэтому, если у вас есть токен на целевой строке, он будет использовать это и игнорировать appsetting. 2) LogentriesCore и LogentriesNlog должны находиться в папке приложения, а не в местоположении NLog.dll. Я заметил это, потому что я использовал ведение журнала из общей библиотеки, и мне приходилось добавлять ссылки на LogentriesCore и LogentriesNLog на проекты с использованием библиотеки, хотя им и не нужно заботиться.

Чтобы диагностировать проблемы, я сделал эти вещи 1) У вас есть настройка трассировки в webapp (чтобы перейти в хранилище Blob в нашем случае). Просто используйте Trace.Writeline и установите трассировку на портале Azure. 2) При создании моего регистратора сначала включайте исключения: LogManager.ThrowExceptions = true; Logger = LogManager.GetCurrentClassLogger(); 3) Включите отладку в целевой строке Logentries в config:

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