我正在尝试配置我的azure asp.net网站,以便将log4net跟踪发送到Azure Application Insights。我可以在我的azure控制台页面视图等中看到,因此我知道它工作正常。当配置文件处理程序时,我也可以看到log4net跟踪,但是在配置log4net以使用应用程序洞察处理程序时,我没有看到任何log4net条目出现在应用程序洞察仪表板中,在构建或运行时没有错误或警告 - 仪表板中没有任何结果。我查看了Fiddler中的网络流量,我可以看到发送到应用程序洞察的网页浏览数据等,但不是log4net跟踪流量,因此我怀疑这是一个配置问题。
另外我在我的主项目中尝试过TelemetryClient(),我在仪表板中看到了tracetraffic。但是,这不符合我的使用案例,因为TelemetryClient似乎还不支持非asp.net dll(即我的业务和数据逻辑,它们位于不同的dll' s)。
有人提供任何见解或建议吗?
我已经为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>
答案 0 :(得分:4)
尝试安装Log4Net Appender的预发布版本。
我在步骤created by someone else之后创建了一个规范的ASP.NET MVC示例,但上面遇到了同样的问题。但后来跟着写了in the Application Insights documentation的一些步骤,发现那些指定为log4net appender安装PreRelease包。完成它后,它工作:)
答案 1 :(得分:2)
您的log4net配置正确;我在测试网站上使用它并且它有效。此外,由于您在Fiddler中看到了其他AI数据,因此您的AI也已正确配置。 在这种情况下要寻找的一件事是log4net.Config.XmlConfigurator属性。它是一个程序集级属性,可能需要正确读取log4net配置。
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
请您确定在项目中指定了它并再试一次?
答案 2 :(得分:2)
我在Sitecore网站上将我的Log4Net日志发送到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>
答案 3 :(得分:1)
在我的情况下(我已将Application Insights添加到现有的Web应用程序中)除Microsoft.ApplicationInsights.Log4NetAppender
之外,我必须使用NuGet添加Microsoft.ApplicationInsights.Web
包。在创建ApplicationInsights.config
之后,您需要指定您的InstrumentationKey。
E.g。 of ApplicationInsights.config
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
<InstrumentationKey>YOUR KEY HERE</InstrumentationKey>
<TelemetryModules>
...