Serilog를 사용하는 작업자 서비스용 Application Insights

이 게시물은 C# Advent Calendar 2020의 기여입니다. 이것은 dotnet 핵심 작업자 서비스에서 Serilog를 사용하여 구현Azure Application Insights하기 위한 간단한 안내서입니다.

.Net Core 작업자 서비스는 장기 실행 백그라운드 작업에 가장 적합합니다. 이러한 서비스는 Windows 서비스 또는 Linux 데몬으로 실행할 수 있습니다. 작업자 서비스는 즉시 사용 가능한 DI, 로깅 및 구성 기능과 함께 제공됩니다.

먼저 다음과 같은 간단한 명령을 사용하여 즐겨찾는 터미널을 통해 새 Worker Service 프로젝트를 만듭니다.

dotnet new worker -o WorkerService


프로젝트 디렉토리에 다음 Serilog 패키지를 설치하십시오.
  • 세릴로그
  • Serilog.Extensions.Hosting
  • Serilog.Settings.Configuration
  • Serilog.Sinks.Console
  • Serilog.Sinks.ApplicationInsights

  • dotnet add package Serilog
    dotnet add package Serilog.Extensions.Hosting
    dotnet add package Serilog.Settings.Configuration
    dotnet add package Serilog.Settings.Configuration
    dotnet add package Serilog.Settings.Configuration
    


    Azure Portal에서 Application Insights 계측 키를 복사하고 appsettings.json을 다음 json으로 업데이트합니다.

    {
      "Serilog": {
        "MinimumLevel": "Debug",
        "WriteTo": [
          "Console",
          {
            "Name": "ApplicationInsights",
            "Args": {
              "instrumentationKey": "__ApplicationInsightsInstrumentationKey__",
              "restrictedToMinimumLevel": "Information",
              "telemetryConverter": "Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights"
            }
          }
        ]
      }
    }
    
    


    Program.cs 파일 가져오기 Serilog 네임스페이스에서using Serilog; CreateHostBuilder를 업데이트하여 Serilog 로거를 인스턴스화하고 UseSerilog() 메서드로 연결하여 기본 로깅 공급자를 Serilog로 바꿉니다.

    public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .ConfigureServices((hostContext, services) =>
                    {
                        services.AddHostedService<Worker>();
                         Log.Logger = new LoggerConfiguration()
                        .ReadFrom.Configuration(hostContext.Configuration)
                        .CreateLogger();
                    }).UseSerilog();
    


    프로젝트 디렉터리에서 다음 명령을 사용하여 작업자 서비스를 실행합니다.

    dotnet run
    


    Azure Portal Application Insights 로그에 콘솔 메시지가 나타나기 시작해야 합니다.



    좋은 웹페이지 즐겨찾기