3

从 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 应用程序运行时,我在 LogEntries 控制台上看不到任何日志。当我在 localhost 上运行它时,它运行成功。

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

我该如何诊断?

4

2 回答 2

0

如果您在 Azure 网站上,则不存在标准系统事件日志。因此,这可能是您无法应用日志的问题。

以下是Azure 站点上可用的所有选项的详细概述。

于 2015-07-23T17:06:13.087 回答
0

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

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

于 2015-09-25T02:12:54.517 回答