.NET Framework 및 Core에서 응용 프로그램을 다시 시작하지 않고 Serilog 최소 수준 변경
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를 구성하려면 다음 단계를 따르세요.
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"
}
}
]
}
}
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를 구성하는 방법을 보여줍니다.
Reference
이 문제에 관하여(.NET Framework 및 Core에서 응용 프로그램을 다시 시작하지 않고 Serilog 최소 수준 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/swimburger/changing-serilog-minimum-level-without-application-restart-on-net-framework-and-core-5040텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)