푸터 콘텐츠로 바로가기
.NET 도움말

Serilog .NET (개발자를 위한 작동 원리)

Serilog 로거 구성 및 .NET 애플리케이션의 구조적 진단 로깅 동작 구성 소개

.NET Core에서는 애플리케이션 동작이나 로그 이벤트를 진단하고 이해하기 위해 효율적인 구조적 Serilog 로깅 구성이 가장 중요합니다. 여러 로깅 라이브러리 중, Serilog는 강력한 구조적 로깅 메시지 기능으로 두드러집니다. 전통적인 로깅과는 달리, 구조적 로깅은 로깅 수준 메시지를 구조화된 데이터로 포맷하여 분석 및 쿼리하기 쉽게 만듭니다. 이 글은 .NET 6 애플리케이션에서 Serilog가 로깅 프로세스를 어떻게 향상시키는지 탐구하며, 각 로그 이벤트가 단순한 문자열이 아닌 구조화된 쿼리가 가능한 객체로 보장됩니다. 이 접근 방식은 로그 메시지를 전략적 자산으로 변환하여 보다 효과적인 모니터링 및 분석을 가능하게 합니다.

Serilog의 기능 이해하기

Serilog는 .NET 애플리케이션을 위한 강력하고 유연한 로깅 라이브러리입니다. 이 라이브러리는 로깅 경험을 향상시키고 애플리케이션 동작을 진단하고 분석하기 쉽게 만드는 다양한 기능을 제공합니다. 이 섹션에서는 Serilog가 제공하는 주요 기능 중 몇 가지를 탐색할 것입니다.

구조적 로깅

Serilog의 두드러진 기능 중 하나는 구조적 로깅에 대한 지원입니다. 단순히 메시지를 평문으로 로깅하는 대신, Serilog를 사용하여 구조화된 데이터를 로깅할 수 있습니다. 이 구조화된 데이터는 JSON 객체, 사전, 또는 직렬화할 수 있는 다른 유형일 수 있습니다. 구조화된 데이터를 로깅함으로써 Elasticsearch나 Splunk와 같은 도구를 사용하여 로그 이벤트를 쉽게 분석하고 쿼리할 수 있습니다.

유연한 구성

Serilog는 애플리케이션의 요구에 따라 로깅 동작을 사용자 정의할 수 있는 유연한 구성 옵션을 제공합니다. Serilog를 프로그래밍 방식으로 또는 구성 파일을 사용하여 구성할 수 있습니다. 이 유연성은 애플리케이션을 다시 시작할 필요 없이 런타임에 로깅 동작을 조정할 수 있게 합니다.

싱크 라이브러리

Serilog는 여러 싱크 라이브러리를 제공하여 로그 이벤트를 다양한 대상에 보낼 수 있도록 합니다. 일부 인기 있는 싱크 라이브러리는 다음과 같습니다:

  • Serilog.Sinks.Console: 콘솔에 로그 이벤트를 보냅니다.
  • Serilog.Sinks.File: 로그 이벤트를 텍스트 파일에 기록합니다.
  • Serilog.Sinks.Seq: Seq라는 구조화된 로그 서버로 로그 이벤트를 전송합니다.
  • Serilog.Sinks.Elasticsearch: 로그 이벤트를 Elasticsearch로 전송합니다.

이 싱크 라이브러리들은 Serilog를 다양한 로깅 인프라와 도구와 쉽게 통합할 수 있게 합니다.

로깅 강화

로깅 강화는 로그 이벤트에 추가적인 컨텍스트 정보를 추가할 수 있게 하는 기능입니다. Serilog는 타임스탬프, 스레드 ID, 로그 레벨 등의 정보를 자동으로 추가할 수 있는 다양한 향상기를 제공합니다. 애플리케이션에 특정한 정보를 추가하기 위해 사용자 정의 향상기를 만들 수도 있습니다.

로그 필터링

Serilog는 다양한 기준에 따라 로그 이벤트를 필터링할 수 있게 합니다. 로그 레벨, 속성 값, 또는 다른 조건에 따라 로그 이벤트를 포함하거나 제외하도록 필터를 구성할 수 있습니다. 이 필터링 기능을 통해 분석사거나 문제해결에 가장 관련성이 높은 로그 이벤트에 집중할 수 있습니다.

이 기능들을 이해하고 활용함으로써, Serilog의 강력함을 사용하여 로깅 능력을 향상시키고 애플리케이션의 동작에 대한 귀중한 통찰력을 얻을 수 있습니다.

구조화된 로깅: 핵심 기능

Serilog의 주요 강점은 로그 메시지를 구조화된 데이터로 변환하는 것입니다. 일반 텍스트를 출력하는 다른 로깅 라이브러리와 달리, Serilog는 구조화된 JSON 형식으로 로그를 생성해 로그 데이터를 쉽게 구문 분석하고 질의할 수 있게 합니다. 이 기능은 운영에 대한 지능이 중요한 현대 애플리케이션에서 로그 분석과 모니터링에 필수적입니다. 구조화된 로그는 ELK (Elasticsearch, Logstash, Kibana) 스택과 같은 시스템에 로그 메시지를 수집하여 고급 분석에 특히 유용합니다.

풍부한 로그 이벤트 세부사항

Serilog는 컨텍스트 정보를 추가하여 로그 이벤트를 향상시킴으로써 애플리케이션 내부에서 무슨 일이 일어나고 있는지에 대한 포괄적인 뷰를 제공합니다. 각 로그 이벤트는 단순 로그 메시지뿐만 아니라 타임스탬프, 로그 레벨, 예외 세부사항, 사용자 정의 속성 등의 많은 세부 정보를 포함할 수 있습니다. 이로 인해 Serilog는 로그의 깊이와 명확성 측면에서 다른 로깅 라이브러리보다 우수하며, 개발자에게 애플리케이션의 동작과 성능에 대한 중요한 통찰력을 제공합니다.

ASP.NET Core에서 Serilog 구현

Serilog을 .NET 6 ASP.NET Core 애플리케이션에 통합하려면 appsettings.json 파일이나 Serilog 구성 섹션을 통해 Serilog을 먼저 구성하세요. 이 구성은 어떻게, 어디서, 어떤 로그 데이터를 수집할지를 결정합니다.

구성 파일을 통한 방법

구성 JSON 파일을 사용하여 로그 레벨, 출력 대상 (로그 파일 또는 콘솔 등), 로그 출력 형식을 정의합니다. 구성 파일 접근 방식은 코드를 수정하지 않고 로깅 동작을 변경할 수 있는 유연성을 제공합니다. 이는 appsettings.json 파일에서 설정을 지정하여 콘솔, 파일 또는 클라우드 기반 로그 관리 서비스와 같은 다양한 싱크로 로그 출력을 직접할 수 있게 함으로써 수행됩니다.

코드에서 프로그래밍적으로

또는 LoggerConfiguration 클래스를 사용하여 직접 코드에서 Serilog을 구성하십시오. 이 방법은 동적 로그 레벨이나 사용자 지정 로그 싱크와 같은 복잡한 로깅 시나리오를 설정하는 데 자주 사용됩니다. 예를 들어, 특정 간격으로 또는 특정 크기에 도달할 때 새로운 로그 파일을 생성하여 효율적인 로그 파일 관리를 보장하는 롤링 로그 파일을 구성할 수 있습니다.

// Create a logger instance with a rolling log file that creates a new log file every day
var logger = new LoggerConfiguration()
    .WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day) 
    .CreateLogger();
// Create a logger instance with a rolling log file that creates a new log file every day
var logger = new LoggerConfiguration()
    .WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day) 
    .CreateLogger();
' Create a logger instance with a rolling log file that creates a new log file every day
Dim logger = (New LoggerConfiguration()).WriteTo.File("logs/myapp.txt", rollingInterval:= RollingInterval.Day).CreateLogger()
$vbLabelText   $csharpLabel

ASP.NET Core와의 통합

ASP.NET Core와 Serilog을 통합하려면 패키지 관리자 콘솔을 통해 Serilog 패키지를 추가하고 Program.cs 파일에 로거를 설정해야 합니다. .NET 6의 var buildervar app 문은 Serilog을 애플리케이션의 로깅 인프라에 매끄럽게 연결합니다. 이 과정은 기본 로거를 Serilog로 대체하여 모든 로그 메시지가 Serilog 파이프라인을 통해 처리되도록 합니다.

var builder = WebApplication.CreateBuilder(args);

// Configure Serilog to use settings from appsettings.json and write logs to the console
builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console()
    .ReadFrom.Configuration(ctx.Configuration));

var app = builder.Build();
var builder = WebApplication.CreateBuilder(args);

// Configure Serilog to use settings from appsettings.json and write logs to the console
builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console()
    .ReadFrom.Configuration(ctx.Configuration));

var app = builder.Build();
Dim builder = WebApplication.CreateBuilder(args)

' Configure Serilog to use settings from appsettings.json and write logs to the console
builder.Host.UseSerilog(Function(ctx, lc) lc.WriteTo.Console().ReadFrom.Configuration(ctx.Configuration))

Dim app = builder.Build()
$vbLabelText   $csharpLabel

ASP.NET Core에서 Serilog와 Iron Software Suite 통합

Iron Software Suite는 Serilog를 사용하는 .NET 6 애플리케이션 내에서 로깅 기능을 크게 향상시킬 수 있는 C# 라이브러리 모음을 제공합니다. 이 Suite는 IronPDF, IronOCR, IronXL, IronZIP, IronQR, IronBarcode, IronWebScraper와 같은 다양한 도구를 포함하고 있으며, 각 도구는 ASP.NET Core 애플리케이션에 통합하여 로깅과 데이터 처리 기능을 향상시킬 수 있는 고유한 기능을 제공합니다.

ASP.NET Core 애플리케이션에서 Serilog와 Iron Software Suite를 통합하려면 다음의 일반적인 단계들을 따르십시오:

  1. NuGet이나 패키지 관리자 콘솔을 사용하여 필요한 Iron Software Suite 패키지를 설치합니다.
  2. Serilog.Sinks.File과 같은 로그 파일용 싱크 라이브러리나 콘솔 출력을 위한 Serilog.Sinks.Console을 사용하여 Serilog를 구성합니다.
  3. 애플리케이션 코드 내에서 Iron Software Suite 라이브러리를 사용하여 각 기능을 활용하고 로깅 프로세스를 향상시킵니다. 이는 PDF 생성, 바코드 읽기, 웹 콘텐츠 스크래핑과 같은 작업을 포함할 수 있습니다.

Iron Software Suite를 Serilog와 통합함으로써 ASP.NET Core 애플리케이션의 로깅 기능을 확장하고 이러한 라이브러리들이 제공하는 추가 기능을 활용할 수 있습니다.

IronPDF

IronPDF는 .NET 애플리케이션 내에서 PDF의 생성, 읽기, 편집을 가능하게 합니다. 이것은 로그 데이터를 PDF 보고서로 생성하여 로그 정보를 표준 형식으로 쉽게 배포하고 볼 수 있게 하는 데 특히 유용할 수 있습니다.

Serilog .NET (개발자를 위한 작동 방식): 그림 1 - IronPDF

IronOCR

IronOCR는 이미지를 125개 언어 텍스트로 번역할 수 있는 광학 문자 인식 (OCR) 라이브러리입니다. 이 기능은 이미지나 스캔된 문서에서 텍스트 데이터를 추출해 로그 데이터를 더 많은 컨텍스트 정보로 풍부하게 해야 하는 로깅 시나리오에서 활용될 수 있습니다.

Serilog .NET (개발자를 위한 작동 방식): 그림 2 - IronOCR

IronXL

IronXL은 Office Interop이 필요 없이 Excel과 작업할 수 있는 기능을 제공합니다. 이는 특히 로그 데이터를 Excel로 내보내 추가 분석 및 보고를 할 수 있어 데이터 조작 및 시각화를 위한 친숙한 인터페이스를 제공하기 때문에 로그 목적으로 매우 유용할 수 있습니다.

Serilog .NET (개발자를 위한 작동 방식): 그림 3 - IronXL

IronBarcode

IronBarcode는 QR 코드와 바코드를 읽고 쓰는 기능을 제공합니다. 이 라이브러리는 로그 파일 내에 인코딩된 정보를 삽입하거나 추출하여 기록된 정보의 보안 및 추적성을 강화할 수 있습니다.

Serilog .NET (개발자를 위한 작동 방식): 그림 4 - IronBarcode

결론

ASP.NET Core 애플리케이션에서 Iron Software Suite를 Serilog와 통합하면 로그 프로세스가 풍부해질 뿐만 아니라 로그 데이터를 처리, 표시 및 분석하는 데 유연성을 더합니다. PDF 보고서 생성, 이미지 기반 로그 처리, Excel 데이터 처리, 로그 파일 크기 관리, 로그 정보 보안 또는 웹 콘텐츠 크롤링 등, Serilog와 Iron Software Suite의 결합은 .NET 6 환경에서 고급 로깅 및 데이터 처리에 대한 다양한 가능성을 열어줍니다.

Iron Software Suite는 Iron Software의 C# 라이브러리 무료 체험판을 제공하여 개발자가 Serilog와 통합하여 ASP.NET Core 애플리케이션의 기능을 강화할 수 있는 기능 및 역량을 탐색할 수 있는 훌륭한 기회를 제공합니다.

자주 묻는 질문

Serilog은 .NET 애플리케이션의 로깅을 어떻게 향상시키나요?

Serilog은 .NET 애플리케이션의 로깅을 향상시키며, 로그 이벤트를 구조화되고 쿼리 가능한 객체로 변환하여 전통적인 평문 텍스트 로깅과 비교하여 더 나은 진단 및 분석을 가능하게 합니다.

Serilog와 함께 구조화된 로깅을 사용하는 장점은 무엇인가요?

Serilog와 함께 구조화된 로깅은 Elasticsearch와 같은 도구로의 분석에 유용한 로그 데이터 구문 분석 및 쿼리의 용이성을 제공하며, 운영 인텔리전스와 모니터링을 향상시킵니다.

.NET 6 애플리케이션에서 Serilog를 어떻게 설정하나요?

.NET 6 애플리케이션에서는 `LoggerConfiguration` 클래스나 `appsettings.json` 같은 구성 파일을 통해 Serilog를 설정하여 코드 수정 없이도 유연한 로깅 동작 조정이 가능합니다.

Serilog은 다양한 로그 전송지에 대해 어떤 통합 옵션을 제공하나요?

Serilog은 다양한 싱크 라이브러리를 제공하여 로그 이벤트를 콘솔, 텍스트 파일, 또는 Elasticsearch 및 Seq 같은 서버로 전송할 수 있는 통합을 허용합니다.

Serilog 로깅에서 Enrichers는 어떤 역할을 하나요?

Serilog의 Enrichers는 로그 이벤트에 타임스탬프와 로그 레벨 같은 맥락 정보를 추가하고, 특정 애플리케이션 데이터를 포함하기 위해 사용자 정의 Enrichers를 만들어 로그의 정보적 가치를 높일 수 있습니다.

Serilog이 다른 라이브러리와 결합되어 기능을 향상시킬 수 있나요?

네, Serilog은 IronPDF, IronOCR, IronXL과 같은 라이브러리와 결합되어 PDF 생성, OCR 처리, Excel 조작 등의 기능을 제공하여 .NET 애플리케이션의 로깅 프로세스와 데이터 처리를 풍부하게 할 수 있습니다.

.NET에서 로그 데이터의 PDF 보고서를 어떻게 생성할 수 있나요?

IronPDF 같은 라이브러리를 사용하여 .NET에서 PDF를 생성, 읽기, 편집할 수 있으며, 로깅 시스템과 통합하여 자세한 로그 보고서를 생성할 수 있습니다.

.NET에서 Excel로 로그 데이터를 내보내 분석할 수 있나요?

네, IronXL 같은 라이브러리를 사용하여 Office Interop 없이 Excel 파일을 조작할 수 있으며, .NET 애플리케이션에서 로그 데이터를 Excel로 내보내 추가 분석 및 보고를 할 수 있습니다.

Iron Software 라이브러리는 Serilog 같은 로깅 시스템에 어떤 이점을 제공하나요?

Iron Software 라이브러리는 PDF 생성, OCR, Excel 파일 조작 등의 기능을 제공하여 .NET 환경에서 데이터 처리 및 보고 기능을 강화함으로써 Serilog 같은 로깅 시스템을 향상시킵니다.

제이콥 멜러, 팀 아이언 최고기술책임자
최고기술책임자

제이콥 멜러는 Iron Software의 최고 기술 책임자(CTO)이자 C# PDF 기술을 개척한 선구적인 엔지니어입니다. Iron Software의 핵심 코드베이스를 최초로 개발한 그는 창립 초기부터 회사의 제품 아키텍처를 설계해 왔으며, CEO인 캐머런 리밍턴과 함께 회사를 NASA, 테슬라, 그리고 전 세계 정부 기관에 서비스를 제공하는 50명 이상의 직원을 보유한 기업으로 성장시켰습니다.

제이콥은 맨체스터 대학교에서 토목공학 학사 학위(BEng)를 최우등으로 취득했습니다(1998~2001). 1999년 런던에서 첫 소프트웨어 회사를 설립하고 2005년 첫 .NET 컴포넌트를 개발한 후, 마이크로소프트 생태계 전반에 걸쳐 복잡한 문제를 해결하는 데 전문성을 발휘해 왔습니다.

그의 대표 제품인 IronPDF 및 Iron Suite .NET 라이브러리는 전 세계적으로 3천만 건 이상의 NuGet 설치 수를 기록했으며, 그의 핵심 코드는 전 세계 개발자들이 사용하는 다양한 도구에 지속적으로 활용되고 있습니다. 25년의 실무 경험과 41년의 코딩 전문성을 바탕으로, 제이콥은 차세대 기술 리더들을 양성하는 동시에 기업 수준의 C#, Java, Python PDF 기술 혁신을 주도하는 데 주력하고 있습니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해