programing

Log4Net(애플리케이션 통찰력 포함)

megabox 2023. 4. 24. 23:00
반응형

Log4Net(애플리케이션 통찰력 포함)

Azure Application Insights에 log4net 트레이스를 전송하도록 azure asp.net 웹사이트를 설정하려고 합니다.파란색 콘솔 페이지 뷰 등을 볼 수 있기 때문에 정상적으로 동작하고 있습니다.파일 핸들러를 사용하여 구성한 경우 log4net 트레이스도 볼 수 있지만 애플리케이션 인사이트 핸들러를 사용하도록 log4net을 구성할 때 애플리케이션 인사이트 대시보드에 log4net 엔트리가 표시되지 않으며 빌드 또는 실행 시 오류나 경고가 표시되지 않습니다.대시보드에는 결과가 표시되지 않습니다.Fiddler에서 네트워크트래픽을 확인했는데, 페이지뷰 데이터 등이 어플리케이션인사이트로 전송되고 있는 것을 알 수 있었습니다만, log4net 트레이스 트래픽은 볼 수 없기 때문에, 이것은 설정상의 문제라고 생각됩니다.

또, 메인 프로젝트에서 TelemetryClient()를 시험해 본 결과, 대시보드에 tracetraffic이 표시됩니다.그러나 TelemetryClient는 아직 asp.net 이외의 dll(즉, 별도의 dll에 있는 비즈니스 및 데이터 로직)을 지원하지 않는 것 같기 때문에 이 사용 사례에 맞지 않습니다.

통찰력이나 조언을 해주실 분?

Microsoft용 nuget 패키지를 설치했습니다.어플통찰력Log4NetAppender.dll 이며 Microsoft 를 사용하고 있습니다.어플통찰력 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>

Log4Net Appender의 PreRelease 버전을 설치해 보십시오.

저는 표준 ASP를 만들었습니다.다른 사용자가 작성한 절차에 따른 NET MVC의 예이며, 상기와 같은 문제가 있었습니다.그러나 Application Insights 설명서에 기재되어 있는 몇 가지 절차를 따라 log4net appender용 PreRelease 패키지를 설치하는 것을 발견했습니다.그렇게 하면 효과가 있었습니다. :)

내 경우(기존 웹 애플리케이션에 애플리케이션 통찰력을 추가)Microsoft.ApplicationInsights.Log4NetAppender나는 추가해야만 했다.Microsoft.ApplicationInsights.WebNuGet을 사용하여 패키지를 만듭니다.그 후 에서 작성ApplicationInsights.configInstrumentationKey를 지정해야 합니다.

예: 출원Insights.config

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

Sitecore 웹사이트에서 Log4Net 로그를 AI로 보내는 것도 문제가 있었습니다.Sitecore는 Log4Net을 자체 구현하고 있기 때문에 AI Nuget 패키지에서는 동작하지 않았습니다.AI에 로그를 보낼 Apprender를 직접 만들었습니다.

 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>

당신의 log4net 설정은 정확합니다.테스트 웹사이트에서 사용했는데 동작했습니다.또한 Fiddler에서 다른 AI 데이터를 볼 수 있기 때문에 AI도 올바르게 설정되어 있습니다.이 경우 log4net을 찾아야 합니다.Config.XmlConfigurator 속성.이는 어셈블리 수준의 속성이며 log4net 구성을 올바르게 읽으려면 필요할 수 있습니다.

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

프로젝트에 명시되어 있는지 확인하고 다시 시도해 주시겠습니까?

언급URL : https://stackoverflow.com/questions/28800320/log4net-with-application-insights

반응형