web-dev-qa-db-fra.com

Log4Net avec Application Insights

J'essaie de configurer mon site Web Azure asp.net pour envoyer des traces log4net à Azure Application Insights. Je peux voir dans mes vues de page de la console Azure, etc., donc je sais que cela fonctionne bien. Je peux également voir les traces log4net, lorsqu'il est configuré avec un gestionnaire de fichiers, mais lors de la configuration de log4net pour utiliser le gestionnaire d'application insights, je ne vois aucune entrée log4net apparaître dans le tableau de bord d'application insight, aucune erreur ou avertissement lors de la génération ou de l'exécution - juste aucun résultat dans le tableau de bord. J'ai regardé le trafic réseau dans Fiddler, et je peux voir les données de consultation de page, etc. envoyées aux informations de l'application, mais pas le trafic de trace log4net, donc je soupçonne que c'est un problème de configuration.

Séparément, j'ai essayé le TelemetryClient () dans mon projet principal, et je vois le tracetraffic avec succès dans le tableau de bord. Cependant, cela ne correspond pas à mon cas d'utilisation car TelemetryClient ne semble pas encore prendre en charge les DLL non asp.net (c'est-à-dire mon entreprise et ma logique de données qui sont dans des DLL distinctes).

Quelqu'un offre-t-il des idées ou des conseils?

J'ai installé le package nuget pour Microsoft.ApplicationInsights.Log4NetAppender.dll et j'utilise Microsoft.ApplicationInsights.0.13.2-build00132

J'ai ce qui suit dans mon web.config selon https://blog.ehn.nu/2014/11/using-log4net-for-application-insights/

<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>
26
BMac

Essayez d'installer la version PreRelease de Log4Net Appender .

J'avais créé un exemple canonique ASP.NET MVC en suivant les étapes créé par quelqu'un d'autre et j'ai eu le même problème ci-dessus. Mais ensuite, j'ai suivi quelques étapes écrites dans la documentation Application Insights et découvert que celles-ci spécifiaient l'installation du package PreRelease pour l'appender log4net. Cela fait, ça a marché :)

4
Phil

J'ai également eu des problèmes avec l'envoi de mes journaux Log4Net à AI dans un site Web Sitecore. Sitecore a sa propre implémentation de Log4Net, donc cela ne fonctionnait pas avec le package AI Nuget. J'ai créé mon propre approbateur dans lequel j'envoie les journaux à 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);
        }
    }

Dans sitecore.config:

<log4net>
    <appender name="LogFileAppender" type="namespace.CustomLogFileAppender, dll name">
      ...
    </appender>
</log4net>
2
Robin B

Votre configuration log4net est correcte; Je l'ai utilisé dans un site Web de test et cela a fonctionné. De plus, comme vous voyez d'autres données d'IA dans Fiddler, votre IA est également configurée correctement. Une chose à rechercher dans de tels cas est l'attribut log4net.Config.XmlConfigurator. Il s'agit d'un attribut au niveau de l'assembly et il peut être nécessaire que la configuration de log4net soit lue correctement.

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

Pouvez-vous vous assurer de l'avoir spécifié dans votre projet et réessayer?

2
tokaplan

Dans mon cas (j'ai ajouté Application Insights à une application Web existante) en plus de Microsoft.ApplicationInsights.Log4NetAppender J'ai dû ajouter Microsoft.ApplicationInsights.Web package utilisant NuGet. Après cela, dans créé ApplicationInsights.config vous devez spécifier votre InstrumentationKey.

Par exemple. de ApplicationInsights.config

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