Bài viết trước tôi đã chia sẻ về Serilog và logging cấu trúc, chúng ta đã tìm hiểu về cách Serilog hỗ trợ logging có cấu trúc và các lợi ích của nó. Hôm nay, chúng ta sẽ đi sâu vào các sink log mà Serilog cung cấp, mỗi loại có ưu điểm, nhược điểm, hiệu năng và yêu cầu riêng. Đây là thông tin quan trọng để bạn chọn sink phù hợp cho ứng dụng của mình, đặc biệt trong môi trường Production hoặc dev.
Sink log là nơi Serilog gửi hoặc lưu trữ log, từ console đơn giản đến các hệ thống phức tạp như Azure Application Insights hay ElasticSearch... việc chọn sink đúng không chỉ ảnh hưởng đến hiệu năng mà còn đến khả năng giám sát và phân tích log. Hãy cùng khám phá từng sink dưới đây nhé.
Các sink log phổ biến hay dùng có thể kể tới ở đây như:
Sink Console ghi log ra console (cửa sổ terminal), rất hữu ích cho việc debug và theo dõi nhanh trong quá trình phát triển. Đây là lựa chọn phổ biến khi bạn cần kiểm tra log ngay lập tức mà không cần lưu trữ lâu dài.
Trong trường hợp triển khai trên môi trường Production, bạn có thể sử dụng thêm công cụ lưu lại log console nếu cần thiết.
Ưu điểm
Nhược điểm:
Hiệu năng:
Package: Serilog.Sinks.Console và Serilog.Sinks.ColoredConsole

Sink File ghi log vào một file văn bản, thường được sử dụng để lưu trữ log trong môi trường sản xuất. Hỗ trợ rolling log dựa trên thời gian hoặc kích thước file, giúp quản lý dung lượng hiệu quả.
Ưu điểm:
Nhược điểm:
Hiệu năng:
Cài đặt package Serilog.Sinks.File, link repo

Hoặc thay vì viết trực tiếp trong code, ta có thể linh động hơn bằng cách sử dụng json file và đọc nó từ cấu hình.

Trong appsettings.json file, thêm node Serilog node, và viết thêm cấu hình log ra file:

Sink MSSqlServer ghi log vào bảng trong cơ sở dữ liệu SQL Server hoặc Azure SQL, cho phép query và phân tích log bằng SQL, rất hữu ích cho DBA và các hệ thống cần tích hợp database.
Ưu điểm:
Nhược điểm:
Hiệu năng:
Package: cài đặt Serilog.Sinks.MSSqlServer

Sink MongoDB ghi log vào cơ sở dữ liệu MongoDB, hỗ trợ cả JSON và BSON, phù hợp cho các hệ thống cần linh hoạt trong việc query và phân tích log.
Ưu điểm:
Nhược điểm:
Hiệu năng:
Package Serilog.Sinks.MongoDB


Sink ApplicationInsights gửi log tới Azure Application Insights, một dịch vụ giám sát ứng dụng của Microsoft, hỗ trợ monitoring thời gian thực và alerting.
Ưu điểm:
Nhược điểm:
Hiệu năng:
Package Serilog.Sinks.ApplicationInsights


Sink Seq ghi log vào Seq, một công cụ thu thập và trực quan hóa log tập trung, hỗ trợ search, analysis và alerting mạnh mẽ.
Ưu điểm:
Nhược điểm:
Hiệu năng:
Cài đặt package Serilog.Sinks.Seq


Sink Discord gửi log tới Discord, một nền tảng giao tiếp nhóm khác, hỗ trợ thông báo real-time trong server Discord.
Ưu điểm:
Nhược điểm:
Hiệu năng:
Cài đặt package Serilog.Sinks.Discord


Ưu điểm:
Nhược điểm:
Hiệu năng:
Cài đặt package Serilog.Sinks.Elasticsearch

Mỗi sink trong Serilog có ưu điểm và nhược điểm riêng, phù hợp với các trường hợp sử dụng khác nhau. Tùy thuộc vào nhu cầu của ứng dụng, bạn có thể chọn sink phù hợp, ví dụ như Console cho debug nhanh, File cho lưu trữ lâu dài, hoặc ApplicationInsights, Seq, Elasticsearch+Kinana, hay Slack, Discord cho giám sát thời gian thực.
Với kinh nghiệm từ bản thân, tôi khuyến khích bạn cân nhắc hiệu năng, chi phí và yêu cầu bảo trì khi chọn sink. Hy vọng bài viết này sẽ giúp bạn tối ưu hóa hệ thống logging của mình.
Hãy chia sẻ ý kiến hoặc kinh nghiệm của bạn về Serilog và các sink log trong phần bình luận nhé! Tôi luôn sẵn sàng thảo luận để cùng nhau học hỏi và phát triển.
Happy coding :)
Tài liệu tham khảo:
/Son Do - I share real-world lessons, team building & developer growth.
#dotnet #dotnetcore #serilog #logging #observability #developers #techlead #seniorsoftwaredeveloper #wecommit100xshare #1percentbetter
Công nghệ - 19/08/2025 21:13:07
Tìm hiểu cách xây dựng hệ thống phát hiện ngôn ngữ ký hiệu theo thời gian thực bằng AI, sử dụng DETR để tăng cường khả năng tiếp cận và đổi mới. Kết nối lời nói và cử chỉ.
Công nghệ - 18/08/2025 13:38:25
Tối ưu hóa các hệ thống RAG bằng cách tận dụng siêu dữ liệu để truy xuất thông tin chính xác và nhanh chóng hơn, giải quyết các thách thức về dữ liệu dư thừa hoặc lỗi thời với công cụ LangExtract nguồn mở. Khám phá cách LangExtract sử dụng các mô hình ngôn ngữ tiên tiến để trích xuất và cấu trúc siêu dữ liệu, tạo ra một quy trình truy xuất hợp lý và hiệu quả.
Công nghệ - 01/08/2025 07:00:00
Gỡ lỗi LLM rất quan trọng vì quy trình làm việc của chúng phức tạp và liên quan đến nhiều phần như chuỗi, lời nhắc, API, công cụ, trình truy xuất, v.v.
Công nghệ - 19/06/2025 03:05:09
Code xong chạy được là chưa đủ – phải biết khi nào nó "chết" nữa chứ 😅
Bạn đang triển khai ứng dụng trên Kubernetes, Docker hay môi trường production nào? Và bạn từng "toát mồ hôi" vì service chết mà không ai báo?
Công nghệ - 16/07/2025 13:41:17
Công nghệ - 27/06/2025 03:15:44
Công nghệ - 11/12/2025 15:05:29
[Góc chuyện nghề] bán account game để đi học nghệ - bạn dám không?
Làm nghề 20 năm, gặp nhiều sinh viên, nhưng chiều qua tôi khá bất ngờ với một cậu em tên Quang. Em Quang muốn theo nghề BA và mong muốn lương 20 triệu sau khi làm việc 1.5 năm tới 2 năm trong nghề.
Công nghệ - 22/09/2025 08:59:20
Dừng ngay việc dùng DateTime.Now trong APIs, đó là ổ lỗi tiềm ẩn trong hệ thống của bạn
⏱️ Tôi từng nghĩ DateTime.Now là một thứ vô hại, đơn giản và tiện lợi, cho đến khi gặp những vấn đề về múi giờ. Những lỗi "tưởng chừng nhỏ" này lại chính là nguồn cơn của sự thất vọng và tốn kém thời gian cho nhiều đội ngũ phát triển.
Công nghệ - 14/03/2025 04:30:32