2015-03-01 11 views
19

Ich versuche meine Azure asp.net Website zu konfigurieren, um log4net Traces an Azure Application Insights zu senden. Ich kann in meinen azurblauen Konsolenseiten usw. sehen, daher weiß ich, dass das gut funktioniert. Ich kann auch log4net Traces sehen, wenn sie mit einem Dateihandler konfiguriert sind, aber wenn ich log4net für die Verwendung des Application Insights Handlers konfiguriere, sehe ich keine log4net Einträge im Application Insight Dashboard, keine Fehler oder Warnungen zum Build oder zur Laufzeit keine Ergebnisse im Dashboard. Ich habe den Netzwerkverkehr in Fiddler betrachtet und kann sehen, dass die Seitenaufrufdaten usw. an Anwendungseinblicke gesendet werden, aber nicht an den trace-Verkehr von log4net, daher vermute ich, dass dies ein Konfigurationsproblem ist.Log4Net mit Application Insights

Getrennt habe ich den TelemetryClient() in meinem Hauptprojekt versucht, und ich sehe den Trace-Verkehr im Dashboard. Dies passt jedoch nicht zu meinem Anwendungsfall, da TelemetryClient bisher keine asp.net-DLLs unterstützt (d. H. Meine Geschäfts- und Datenlogik, die sich in separaten DLLs befinden).

Bietet jemand einen Einblick oder Rat?

Ich habe das nuget Paket für Microsoft.ApplicationInsights.Log4NetAppender.dll installiert und ich bin mit Microsoft.ApplicationInsights.0.13.2-build00132

Ich habe folgend in meinem web.config nach http://geekswithblogs.net/jakob/archive/2014/11/09/using-log4net-for-application-insights.aspx

<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

Hallo, ich habe das gleiche Problem ... Sie haben bereits eine Lösung gefunden? Danke ... – bob

+0

@bob nein, noch nicht.Ich habe mich an das zuständige MS-Team gewandt, aber noch keine Rückmeldung. – BMac

+0

Ich habe genau das gleiche Problem. Ich kann in Application Insights protokollierte nicht erfasste Ausnahmen, aber keine Protokollierung für log4net sehen, obwohl sie im Datei-Appender einwandfrei angezeigt werden. Haben Sie jemals einen Grund dafür gefunden? – Phil

Antwort

1

Ihre log4net-Konfiguration ist korrekt; Ich habe es in einer Test-Website verwendet und es hat funktioniert. Da Sie in Fiddler andere KI-Daten sehen, ist Ihre KI ebenfalls richtig konfiguriert. In solchen Fällen sollte nach dem Attribut log4net.Config.XmlConfigurator gesucht werden. Es ist ein Attribut auf Assembly-Ebene und es kann notwendig sein, dass die Konfiguration von log4net korrekt gelesen wird.

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

Können Sie bitte sicherstellen, dass Sie es in Ihrem Projekt angegeben haben, und versuchen Sie es erneut?

+0

danke @tokaplan Ich werde dies heute Nacht versuchen und auf jede Weise antworten, das klingt sicherlich plausibel. – BMac

+0

Leider schien das keinen Unterschied zu machen, dennoch zeigte sich beim Abrufen über Fiddler kein Ereignisverkehr auf dem Outbound und somit nichts im Dashboard. Ich denke, ich werde mit den ersten Prinzipien beginnen. – BMac

4

Versuchen Sie, die PreRelease-Version des Log4Net Appender zu installieren.

Ich hatte ein kanonisches ASP.NET MVC Beispiel nach den Schritten created by someone else erstellt und hatte das gleiche Problem oben. Aber dann folgten einige Schritte geschrieben in the Application Insights documentation und festgestellt, dass diejenigen angegeben, die Installation der PreRelease-Paket für den log4net Appender. Nachdem das erledigt ist, funktioniert es :)

+0

Thakns @Phil Ich werde es sicherlich versuchen, und lassen Sie es wissen. – BMac

+1

@Phil Ich versuche das gleiche zu tun und habe APp Insights Logging Ausnahmen, Anzahl der Anfragen, etc., aber ich kann meine Log.Info() Nachrichten nirgendwo sehen. Irgendwelche Vorschläge? – awj

+0

Sorry @awj, aber ich sehe meine Application Insights-Integration derzeit nicht besonders intensiv an und meine Arbeitsbelastung bedeutet, dass ich wahrscheinlich auch noch eine Weile nicht mehr dabei sein werde. – Phil

0

In meinem Fall (Ich habe Application Insights zu bestehenden Web-Anwendung hinzugefügt) neben Microsoft.ApplicationInsights.Log4NetAppender Ich musste Microsoft.ApplicationInsights.Web Paket mit NuGet hinzufügen. Danach müssen Sie in ApplicationInsights.config Ihren InstrumentationKey angeben.

z. von ApplicationInsights.config

<?xml version="1.0" encoding="utf-8"?> 
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings"> 
    <InstrumentationKey>YOUR KEY HERE</InstrumentationKey> 
    <TelemetryModules> 
    ... 
1

Ich hatte auch einige Probleme mit dem Senden meiner Log4Net-Protokolle an AI in einer Sitecore-Website. Sitecore hat eine eigene Implementierung von Log4Net, so dass es mit dem AI Nuget-Paket nicht funktioniert hat. Ich habe meinen eigenen Apprender gemacht, in dem ich die Logs an AI sende.

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); 
     } 
    } 

In sitecore.config:

<log4net> 
    <appender name="LogFileAppender" type="namespace.CustomLogFileAppender, dll name"> 
     ... 
    </appender> 
</log4net> 
Verwandte Themen