Như anh em đã biết, Logging là một phần không thể thiếu để theo dõi, gỡ lỗi và phân tích hành vi của ứng dụng. Mặc dù .NET cung cấp hệ thống logging tích hợp (`Microsoft.Extensions.Logging`), Serilog là một thư viện logging của bên thứ ba cực kỳ phổ biến và mạnh mẽ, nổi bật với khả năng structured logging (logging có cấu trúc) và hệ sinh thái phong phú các sinks (đích đến log) và enrichers (bộ làm giàu log).
Trong bài viết này, chúng ta sẽ đi sâu vào các tính năng được Serilog hỗ trợ nhé.
Logging truyền thống thường ghi lại các thông điệp dưới dạng chuỗi văn bản tự do. Điều này gây khó khăn cho việc phân tích và truy vấn log một cách tự động.
Structured Logging ghi lại log dưới dạng các sự kiện (events) với các thuộc tính (properties) có tên và giá trị rõ ràng, thường là định dạng JSON.
Lợi ích của Serilog và Structured Logging:
1. Cài đặt NuGet Packages
2. Cấu hình Serilog trong Program.cs - quan trọng nhất
Cách tốt nhất là cấu hình Serilog ngay từ đầu trước khi WebApplication.CreateBuilder được gọi, để có thể log cả quá trình khởi tạo ứng dụng.
3. Cấu hình trong appsettings.json
4. Inject ILogger<T> và sử dụng trong nghiệp vụ
Serilog tích hợp hoàn toàn với Microsoft.Extensions.Logging. Bạn chỉ cần inject ILogger<T> như bình thường.
Dưới đây là chi tiết code của ProductService sử dụng ILogger, cụ thể ở Get Product By Id nhằm mục đích trace lỗi dễ dàng hơn nhé
Enrichers thêm thông tin ngữ cảnh vào tất cả các log event. Một số enricher phổ biến:
Sinks quyết định log sẽ được ghi vào đâu, Console, File,... hay log tập trung Seq, database hay Elasticsearch...
Thậm chí, chúng ta cũng có thể cấu hình nhiều sink cùng lúc (ví dụ: vừa ghi ra Console để debug, vừa ghi ra Seq để phân tích).
Serilog là một thư viện logging mạnh mẽ và linh hoạt, đặc biệt với các khả năng structured logging. Nó giúp việc ghi log trở nên có ý nghĩa hơn, dễ dàng cho việc truy vấn, phân tích và giám sát ứng dụng .NET. Cộng với hệ sinh thái sinks và enrichers rất phong phú, cùng khả năng cấu hình linh hoạt, Serilog là lựa chọn hàng đầu cho việc xây dựng hệ thống logging hiệu quả.
/Son Do - I share real-world lessons, team building & developer growth.
Nguồn tham khảo thêm:
#dotnet #serilog #logging #structuredlogging #backenddev #loggingbestpractices #cleanarchitecture #elasticsearch #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