나만의 ASP.NET 프레임워크 시작 바로가기
나만의 ASP.NET 프레임워크 (1) 바로가기
나만의 ASP.NET 프레임워크 (2) 바로가기
🧱 HyochulLab.Logging 모듈 설계
🎯 목표
- Serilog 기반 로깅 설정 자동화
- ILogger<T> 그대로 사용 가능하게 구성
- JSON 파일/콘솔 출력 + 향후 DB/File 로그로 확장 가능
📦 1. 새 프로젝트 추가
- 이름: HyochulLab.Logging
- 형식: .NET 8 Class Library
- 참조: HyochulLab.Core (추후 공통 메시지 등 연계 가능)
📁 기본 구조
HyochulLab.Logging/
└── Extensions/
└── LoggingBuilderExtensions.cs
🔧 2. NuGet 패키지 설치
dotnet add package Serilog.AspNetCore
dotnet add package Serilog.Settings.Configuration
dotnet add package Serilog.Sinks.Console
dotnet add package Serilog.Sinks.File
🧩 3. LoggingBuilderExtensions.cs
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Serilog;
namespace HyochulLab.Logging.Extensions;
public static class LoggingBuilderExtensions
{
public static ILoggingBuilder AddHyochulLabLogging(this ILoggingBuilder builder, IConfiguration configuration)
{
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.Enrich.FromLogContext()
.CreateLogger();
builder.ClearProviders(); // 기존 로거 제거
builder.AddSerilog(); // Serilog 사용
return builder;
}
}
⚙️ 4. appsettings.json 로깅 설정 추가
📁 SampleApp/appsettings.json
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"Enrich": [ "FromLogContext" ],
"WriteTo": [
{
"Name": "Console"
},
{
"Name": "File",
"Args": {
"path": "Logs/log-.txt",
"rollingInterval": "Day"
}
}
]
}
✅ 5. Program.cs 적용 예시
📁 SampleApp/Program.cs
using HyochulLab.DependencyInjection.Extensions;
using HyochulLab.Web.Extensions;
using HyochulLab.Logging.Extensions;
var builder = WebApplication.CreateBuilder(args);
// 👉 로깅 먼저 구성
builder.Logging.AddHyochulLabLogging(builder.Configuration);
// 👉 HyochulLab 프레임워크 자동 구성
builder.Services.AddHyochulLabFramework(builder.Configuration);
var app = builder.Build();
app.UseHyochulLabExceptionHandling();
app.MapControllers();
app.MapGet("/", () => "✅ HyochulLab.Logging 적용 완료!");
app.Run();
✅ 로그 파일 확인
- 로그 출력 경로: /Logs/log-YYYYMMDD.txt
- 콘솔에도 동시에 출력됨
- 로그 구조는 JSON이 아닌 일반 텍스트 → 필요시 JSON Sink 추가 가능
🔜 다음 확장 방향
항목 설명
| JSON Sink 추가 | 구조화된 JSON 로그로 변환 가능 |
| Request/Response 로깅 Middleware | 모든 API 요청 기록 |
| Exception 로그 분리 저장 | Error 로그만 따로 저장 |
| DB Sink 연동 | MSSQL, Seq, Elasticsearch 등으로 확장 가능 |
.png)
댓글
댓글 쓰기