feat: Serilog 기반 실시간 텔레그램 에러 알림 연동 #6

Merged
kjh2064 merged 1 commits from feature/telegram-logging into master 2026-06-29 11:41:38 +09:00
Owner

개요

애플리케이션 내에서 발생하는 Error 이상의 로그(Error, Fatal)를 실시간으로 모니터링하기 위해 Serilog와 텔레그램 봇을 연동합니다.

주요 변경 사항

  1. 커스텀 싱크 구현 (TelegramSink.cs)

    • Serilog ILogEventSink를 상속받은 custom TelegramSink를 신설하였습니다.
    • Error 이상의 로깅 이벤트 발생 시 지정된 텔레그램 시스템 채널로 알림 메시지를 전송합니다.
    • HTML 구문 분석 오류(400 Bad Request) 방지를 위해 특수문자(&, <, >) 이스케이프 처리를 수행합니다.
    • 텔레그램의 단일 메시지 길이 제한(4,096자)을 넘지 않도록 Exception 상세 내역이 3,000자를 초과하면 말줄임표 처리를 적용하였습니다.
    • 로깅 로직이 메인 요청 흐름에 지연을 주지 않도록 비동기(Task.Run) 방식으로 전송합니다.
  2. 호스트 바인딩 및 초기화 (Program.cs)

    • Program.cs의 Serilog 설정 로직에 커스텀 TelegramSink를 연동시켰습니다.
    • ppsettings.json 파일의 Telegram:BotToken 및 Telegram:SystemChatId (혹은 Telegram:ChatId) 설정을 동적으로 로드하여 바인딩하도록 하였습니다.
  3. 핫픽스 (2026-06-29)

    • 블로그 포스트 작성 및 수정 시 발생하던 카테고리 선택 컴포넌트(MudSelect)의 System.InvalidCastException 에러를 수정하였습니다.
    • model.CategoryId가 int? 타입인 반면 자식 MudSelectItem의 Value가 int 타입으로 바인딩되어 형식이 불일치하던 이슈를 T="int?" 명시 및 @((int?)category.Id) 캐스팅을 통해 해결하였습니다.

테스트 결과

  • dotnet build를 통해 컴파일 에러 및 의존성 오류가 없음을 확인하였습니다. (Build Success)
## 개요 애플리케이션 내에서 발생하는 Error 이상의 로그(Error, Fatal)를 실시간으로 모니터링하기 위해 Serilog와 텔레그램 봇을 연동합니다. ## 주요 변경 사항 1. **커스텀 싱크 구현 (TelegramSink.cs)** - Serilog ILogEventSink를 상속받은 custom TelegramSink를 신설하였습니다. - Error 이상의 로깅 이벤트 발생 시 지정된 텔레그램 시스템 채널로 알림 메시지를 전송합니다. - HTML 구문 분석 오류(400 Bad Request) 방지를 위해 특수문자(&, <, >) 이스케이프 처리를 수행합니다. - 텔레그램의 단일 메시지 길이 제한(4,096자)을 넘지 않도록 Exception 상세 내역이 3,000자를 초과하면 말줄임표 처리를 적용하였습니다. - 로깅 로직이 메인 요청 흐름에 지연을 주지 않도록 비동기(Task.Run) 방식으로 전송합니다. 2. **호스트 바인딩 및 초기화 (Program.cs)** - Program.cs의 Serilog 설정 로직에 커스텀 TelegramSink를 연동시켰습니다. - ppsettings.json 파일의 Telegram:BotToken 및 Telegram:SystemChatId (혹은 Telegram:ChatId) 설정을 동적으로 로드하여 바인딩하도록 하였습니다. 3. **핫픽스 (2026-06-29)** - 블로그 포스트 작성 및 수정 시 발생하던 카테고리 선택 컴포넌트(MudSelect)의 System.InvalidCastException 에러를 수정하였습니다. - model.CategoryId가 int? 타입인 반면 자식 MudSelectItem의 Value가 int 타입으로 바인딩되어 형식이 불일치하던 이슈를 T="int?" 명시 및 @((int?)category.Id) 캐스팅을 통해 해결하였습니다. ## 테스트 결과 - dotnet build를 통해 컴파일 에러 및 의존성 오류가 없음을 확인하였습니다. (Build Success)
kjh2064 added 1 commit 2026-06-29 11:41:07 +09:00
kjh2064 merged commit ea9478f2f1 into master 2026-06-29 11:41:38 +09:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kjh2064/taxbaik#6