33

我正在尝试配置我的 azure asp.net 网站以将 log4net 跟踪发送到 Azure Application Insights。我可以在我的 azure 控制台页面视图等中看到,因此我知道它工作正常。当使用文件处理程序配置时,我还可以看到 log4net 跟踪,但是在配置 log4net 以使用应用程序洞察处理程序时,我没有看到任何 log4net 条目出现在应用程序洞察仪表板中,在构建或运行时没有错误或警告 - 只是仪表板中没有结果。我查看了 Fiddler 中的网络流量,我可以看到页面浏览数据等被发送到应用程序洞察,但不是 log4net 跟踪流量,因此我怀疑这是一个配置问题。

另外,我在我的主项目中尝试了 TelemetryClient(),我在仪表板中成功地看到了 tracetraffic。但是,这不适合我的用例,因为 TelemetryClient 似乎还不支持非 asp.net dll(即我的业务和数据逻辑位于单独的 dll 中)。

有人提供任何见解或建议吗?

我已经为 Microsoft.ApplicationInsights.Log4NetAppender.dll 安装了 nuget 包,我正在使用 Microsoft.ApplicationInsights.0.13.2-build00132

根据https://blog.ehn.nu/2014/11/using-log4net-for-application-insights/,我的 web.config 中有以下内容

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>
    <root>
      <level value="ALL"/>
      <appender-ref ref="aiAppender"/>
    </root>
    <appender name="aiAppender" type="Microsoft.ApplicationInsights.Log4NetAppender.ApplicationInsightsAppender, Microsoft.ApplicationInsights.Log4NetAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%message%newline"/>
      </layout>
    </appender>
  </log4net>
<configuration>
4

4 回答 4

4

尝试安装Log4Net Appender的 PreRelease 版本。

我按照其他人创建的步骤创建了一个规范的 ASP.NET MVC 示例,并且遇到了上述相同的问题。但随后遵循Application Insights 文档中编写的一些步骤,发现那些指定为 log4net appender 安装 PreRelease 包的步骤。完成后它起作用了:)

于 2015-05-07T07:56:22.767 回答
3

我在将我的 Log4Net 日志发送到 Sitecore 网站中的 AI 时也遇到了一些问题。Sitecore 有自己的 Log4Net 实现,因此它不能与 AI Nuget 包一起使用。我制作了自己的 Apprender,在其中将日志发送给 AI。

 public class CustomLogFileAppender : SitecoreLogFileAppender
    {
        protected override void Append(LoggingEvent loggingEvent)
        {
            if (Sitecore.Context.Site != null )
            {

                if(loggingEvent.Level == Level.FATAL)
                {
                    AppsInsightsLogHelper.Critical(loggingEvent.RenderedMessage);
                }

                if (loggingEvent.Level == Level.ERROR)
                {
                    AppsInsightsLogHelper.Error(loggingEvent.RenderedMessage);
                }

                if (loggingEvent.Level == Level.WARN)
                {
                    AppsInsightsLogHelper.Warning(loggingEvent.RenderedMessage);
                }

                if(loggingEvent.Level == Level.INFO)
                {
                    AppsInsightsLogHelper.Info(loggingEvent.RenderedMessage);
                }


            }

                base.Append(loggingEvent);
        }
    }

在 sitecore.config 中:

<log4net>
    <appender name="LogFileAppender" type="namespace.CustomLogFileAppender, dll name">
      ...
    </appender>
</log4net>
于 2016-05-24T13:22:39.080 回答
2

您的 log4net 配置正确;我已经在一个测试网站中使用过它并且它有效。此外,由于您在 Fiddler 中看到了其他 AI 数据,因此您的 AI 也已正确配置。在这种情况下要寻找的一件事是 log4net.Config.XmlConfigurator 属性。这是一个程序集级属性,可能需要正确读取 log4net 配置。

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

您能否确保在您的项目中指定了它并重试?

于 2015-03-30T20:37:16.933 回答
2

就我而言(我已将 Application Insights 添加到现有的 Web 应用程序),此外Microsoft.ApplicationInsights.Log4NetAppender我还必须Microsoft.ApplicationInsights.Web使用 NuGet 添加包。在创建之后,ApplicationInsights.config您需要指定您的 InstrumentationKey。

例如 ApplicationInsights.config

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
  <InstrumentationKey>YOUR KEY HERE</InstrumentationKey>
  <TelemetryModules>
  ...
于 2015-11-05T12:53:28.843 回答