无法从Azure Web App向LogEntries写入日志

时间:2015-07-23 16:44:57

标签: c# azure asp.net-web-api logentries

从Asp.Net Web Api应用程序(版本5)内部我试图将日志发送到LogEntries但不能。使用相同的代码和配置,我可以从localhost成功发送日志。

这是我用来发送日志的代码(使用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上运行它时,它会成功运行。

我还尝试使用WebRequest类向google.com发出简单的http请求,并且可以从Azure上的服务器获得200。所以我认为Azure应用程序可以访问Internet但由于某种原因不能/不能访问LogEntries服务器。

我该如何诊断?

2 个答案:

答案 0 :(得分:0)

如果您使用的是Azure WebSite,那么标准的System EventLog就不存在了。因此,这可能是您无法应用日志的问题。

以下是您在Azure网站上提供的所有选项的detailed overview

答案 1 :(得分:0)

对不起,这有点旧,但也许是为了未来的读者。 从Azure Webapps获取LogEntries时遇到以下问题。 1)关于配置设置顺序的doc是错误的;它仅在它检查了自己的配置后才会读取Azure门户设置和appsettings。因此,如果目标行上有令牌,它将使用该令牌并忽略appsetting。 2)LogentriesCore和LogentriesNlog必须位于应用程序文件夹中,而不是NLog.dll的位置。我注意到这一点是因为我正在使用来自共享库的日志记录,我不得不使用库向项目添加对LogentriesCore和LogentriesNLog的引用,即使他们不应该关心。

为了诊断问题,我做了这些事情 1)在webapp中设置跟踪设置(在我们的案例中转到Blob存储)。 只需使用Trace.Writeline并在Azure门户中设置跟踪。 2)创建Logger时,我先打开异常:                 LogManager.ThrowExceptions = true;                 Logger = LogManager.GetCurrentClassLogger(); 3)在config中的Logentries目标行中打开debug: