无法从Azure Web应用程序将日志写入LogEntries

3

我正在尝试从 Asp.Net Web Api 应用程序(版本 5)内部将日志发送到 LogEntries,但无法成功。使用相同的代码和配置,我可以从本地主机成功地发送日志。

这是我用于发送日志的代码(使用 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控制台上看到任何日志。但是当我在本地主机上运行它时,它可以成功运行。

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

我该如何诊断这个问题?


我建议您发送电子邮件至support@logentries.com - 他们总是很快回复!谢谢! - JTBuchanan
2个回答

0

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

为了诊断问题,我做了以下几件事情: 1)在Webapp中设置跟踪(在我们的情况下,跟踪到Blob存储)。只需使用Trace.Writeline并在Azure门户中设置跟踪。 2)创建Logger时首先打开异常: LogManager.ThrowExceptions = true; Logger = LogManager.GetCurrentClassLogger(); 3)在配置中打开Logentries目标行的调试:


0

如果您正在使用 Azure WebSite,则标准的系统事件日志不在那里。因此,这可能是您无法应用日志的问题所在。

这里是一个详细概述,介绍了您在 Azure 网站上可用的所有选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接