방명록
- [WPF] WPF Serilog 사용해서 Log 세팅하기2024년 02월 01일 16시 53분 35초에 업로드 된 글입니다.작성자: 코딩백구반응형
Serilog 패키지를 사용하여 log 를 출력하고 파일에 저장하는 기능을 적용해보도록 하겠습니다.
우선, Nuget Package 에서 아래 패키지를 설치해줍니다.
- Serilog
- Serilog.Sinks.Console
- Serilog.Sinks.File
저는 json 파일로 config 설정을 해줄 것이므로 아래 패키지를 추가로 설치했습니다.
- Serilog.Settings.Configuration
- Microsoft.Extensions.Configuration
- Microsoft.Extensions.Configuration.FileExtensions
- Microsoft.Extensions.Configuration.Json
이렇게 설치하고 나면 기본적인 Setting 은 끝났습니다.
이제 코드 작성으로 넘어가보도록 하겠습니다.
1. appsettings.json 파일 생성
{ "Log": { "Serilog": { "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ], "MinimumLevel": "Debug", "WriteTo": [ { "Name": "Console" }, { "Name": "File", "Args": { "path": "Logs/log.txt", "rollingInterval": "Minute", "retainedFileCountLimit": 7, "fileSizeLimitBytes": 10485760 } } ], "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ], "Destructure": [ { "Name": "ToMaximumDepth", "Args": { "maximumDestructuringDepth": 4 } }, { "Name": "ToMaximumStringLength", "Args": { "maximumStringLength": 100 } }, { "Name": "ToMaximumCollectionCount", "Args": { "maximumCollectionCount": 10 } } ], "Properties": { "Application": "Rl_AMS_UI" } } } }
위 내용을 보시면 아시겠지만, json 파일에서 Log Setting 을 해줄 수 있습니다.
2. Program.cs 작성
using Microsoft.Extensions.Configuration; using Serilog; namespace SerilogTest { internal class Program { static async Task Main(string[] args) { Console.WriteLine("Hello, World!"); var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .Build(); Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(configuration.GetSection("Log")) .CreateLogger(); try { Log.Error("This is Error!!!!!"); Log.Information("Hello, Serilog world!"); throw new Exception("Test Exception"); } catch (Exception ex) { Log.Error(ex, "Something went wrong"); } finally { await Log.CloseAndFlushAsync(); } } } }
configuration 에서 appsettings.json 의 내용을 읽어오고, GetSection 메서드로 "Log" 부분만 따로 가져옵니다.
그리고 Log.Information , Log.Error, Log.Debug 등의 함수를 사용하여 로그를 출력할 수 있습니다.
이제 작성한 코드를 실행해보면,
실행 결과
1. 로그 출력 화면
2. Log File 저장 확인
3. Log File 내용 확인
기능이 정상적으로 작동하는것을 확인할 수 있습니다.
반응형'WPF' 카테고리의 다른 글
[WPF] Serilog appsettings.json 옵션 값 설명 (0) 2024.02.02 다음글이 없습니다.이전글이 없습니다.댓글