.NET Framework 및 Core에서 응용 프로그램을 다시 시작하지 않고 Serilog 최소 수준 변경

10881 단어 dotnetcsharpaspnet
Serilog를 구성하는 방법에는 여러 가지가 있습니다. 주요 방법은 코드에서 유창한 API를 사용하여 구성하는 것이지만 클래식 .NET Framework AppSettings 및 .NET Core 구성 라이브러리를 사용하여 구성할 수도 있습니다. 구성 라이브러리는 MinimumLevel 및 LevelSwitches의 동적 재로드를 지원한다는 추가적인 이점이 있습니다.
즉, Log4Net의 watch 기능에 가장 가까운 애플리케이션을 다시 로드하지 않고도 로그 수준을 변경할 수 있습니다.
Microsoft.Extensions.Configuration 라이브러리가 .NET Core의 일부로 도입되었지만 이러한 라이브러리는 실제로 .NET Framework에서도 지원됩니다. Serilog 설명서에서는 Serilog.Settings.Configuration 패키지가 .NET Core용이지만 .NET Framework용으로도 사용할 수 있다고 제안합니다!

견본



.NET Framework 및 .NET Core 모두에서 라이브 다시 로드와 함께 JSON 구성을 사용하여 Serilog를 구성하려면 다음 단계를 따르세요.
  • .NET CLI/Visual Studio를 사용하여 콘솔 응용 프로그램을 만듭니다.
  • 다음 패키지의 안정 버전을 추가합니다.
  • Serilog
  • Serilog.Sinks.Console
  • Serilog.Sinks.File
  • Serilog.Settings.Configuration
  • Microsoft.Extensions.Configuration.Json

  • serilog.json 라는 Serilog 구성 전용 JSON 파일을 생성합니다. .NET Core에서는 구성을 appsettings.json 와 병합할 수 있습니다.
    파일에 다음 내용을 추가합니다.

  • {
        "Serilog": {
            "LevelSwitches": {
                "$consoleSwitch": "Verbose",
                "$fileSwitch": "Verbose"
            },
            "Using": [
                "Serilog.Sinks.Console",
                "Serilog.Sinks.File"
            ],
            "MinimumLevel": "Verbose",
            "WriteTo": [
                {
                    "Name": "Console",
                    "Args": {
                        "levelSwitch": "$consoleSwitch"
                    }
                },
                {
                    "Name": "File",
                    "Args": {
                        "path": "Logs/log.txt",
                        "levelSwitch": "$fileSwitch"
                    }
                }
            ]
        }
    }
    


  • csproj 파일을 업데이트하여 serilog.json 파일이 출력과 함께 복사되는지 확인하십시오.

  •   <ItemGroup>
        <None Include="serilog.json">
          <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
      </ItemGroup>
    


    Visual Studio에서 파일을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 '속성'을 선택한 다음 '출력 디렉터리에 복사' 설정을 '최신 버전인 경우 복사'로 업데이트하여 이 작업을 수행할 수도 있습니다.
  • Program.cs 파일을 업데이트하여 serilog.json 구성을 로드하고 Serilog 빌더에 전달합니다.

  • using System;
    using System.IO;
    using System.Threading.Tasks;
    using Microsoft.Extensions.Configuration;
    using Serilog;
    
    class Program
    {
        static async Task Main(string[] args)
        {
            // load serilog.json to IConfiguration
            var configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                // reloadOnChange will allow you to auto reload the minimum level and level switches
                .AddJsonFile(path: "serilog.json", optional: false, reloadOnChange: true) 
                .Build();
    
            // build Serilog logger from IConfiguration
            var log = new LoggerConfiguration()
                .ReadFrom.Configuration(configuration)
                .CreateLogger();
    
            while (true)
            {
                log.Verbose("This is a Verbose log message");
                log.Debug("This is a Debug log message");
                log.Information("This is an Information log message");
                log.Warning("This is a Warning log message");
                log.Error("This is a Error log message");
                log.Fatal("This is a Fatal log message");
                await Task.Delay(1000);
            }
        }
    }
    


  • 프로젝트를 빌드하고 실행하십시오.

  • Serilog는 매초 모든 로그 메시지를 콘솔과 파일에 출력해야 합니다. 자동 재장전을 시도하려면 다음을 수행하십시오.
  • MinimumLevel 속성을 "Verbose"에서 "Fatal"로 수정하고 Logs/log.txt 의 콘솔과 파일에 치명적인 메시지만 기록되는 방식을 확인하십시오. 이 변경 사항을 되돌립니다.
  • $consoleSwitch를 "Verbose"에서 "Fatal"로 수정하고 치명적인 메시지만 콘솔에 기록되는 방식을 확인하십시오. 모든 메시지가 여전히 파일에 기록되고 있습니다.LevelSwitches를 사용하여 콘솔 및 파일과 같은 개별 싱크MinimumLevel를 제어할 수 있습니다.
    즉, 파일에 대해 더 자세한 로그 수준을 사용하고 Azure Application Insights에 대해 덜 자세한 수준을 사용하여 비용을 절감할 수 있습니다.

  • Serilog에 대해 자세히 알아보려면 Serilog website 을 확인하십시오.

    요약



    이 자습서에서는 최소 로그 수준 및 수준 스위치에 대한 자동 다시 로드 기능을 포함하여 .NET Framework 및 .NET Core에서 JSON 구성을 사용하여 Serilog를 구성하는 방법을 보여줍니다.

    좋은 웹페이지 즐겨찾기