0
0
Lập trình
Admin Team
Admin Teamtechmely

9 Mẹo Vàng Để Ghi Nhật Ký Hiệu Quả Trong Ứng Dụng .NET Core

Đăng vào 1 tuần trước

• 4 phút đọc

9 Mẹo Vàng Để Ghi Nhật Ký Hiệu Quả Trong Ứng Dụng .NET Core

Ghi nhật ký là một phần quan trọng trong việc phát triển và vận hành bất kỳ ứng dụng nào, đặc biệt là trong môi trường thực tế. Nhờ vào việc ghi nhật ký, các nhà phát triển có thể dễ dàng theo dõi hoạt động của ứng dụng, phát hiện sự cố, và giám sát hiệu suất.

Trong bài viết này, tôi sẽ chia sẻ những diễn giải và khuyến nghị về cách ghi nhật ký hiệu quả nhất trong ứng dụng ASP.NET Core, với 9 mẹo rõ ràng và dễ áp dụng.

1. Sử Dụng Thư Viện Serilog Để Ghi Nhật Ký

Mặc dù ASP.NET Core đã có sẵn nhà cung cấp dịch vụ ghi nhật ký Microsoft.Extensions.Logging, nhưng để có thêm những tính năng mạnh mẽ hơn, bạn nên xem xét sử dụng Serilog. Serilog cho phép bạn ghi nhật ký cấu trúc, dễ dàng xuất nhật ký ra nhiều nguồn khác nhau như console, file, hoặc hệ thống giám sát.

Cài Đặt Serilog

Để bắt đầu, bạn có thể cài đặt các gói NuGet cần thiết:

Copy
dotnet add package Serilog.AspNetCore

dotnet add package Serilog.Sinks.Console

dotnet add package Serilog.Sinks.File

Cấu Hình

Sau đó, định cấu hình ghi nhật ký trong tệp appsettings.json của bạn:

json Copy
{
  "Serilog": {
    "Using": [
      "Serilog.Sinks.Console",
      "Serilog.Sinks.File"
    ],
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "Microsoft": "Information"
      }
    },
    "WriteTo": [
      { "Name": "Console" },
      { "Name": "File", "Args": { "path": "service.log", "rollingInterval": "Day" } }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
    "Properties": {
      "Application": "ApplicationName"
    }
  }
}

Cuối cùng, bạn cần đăng ký Serilog trong cấu hình ứng dụng:

Copy
var builder = WebApplication.CreateBuilder(args);
builder.Host.UseSerilog((context, loggerConfig) =>
    loggerConfig.ReadFrom.Configuration(context.Configuration)
);

2. Sử Dụng Mức Ghi Nhật Ký Phù Hợp

Đối với mỗi ứng dụng, việc sử dụng các mức ghi nhật ký khác nhau rất quan trọng để quản lý thông tin. Các mức ghi nhật ký bao gồm:

  • Trace: Cung cấp thông tin chi tiết nhất, nhưng thường tắt theo mặc định.
  • Debug: Thích hợp cho quá trình phát triển, thường xuyên sử dụng trong giai đoạn thử nghiệm.
  • Information: Theo dõi luồng chung của ứng dụng.
  • Warning: Đánh dấu các sự kiện không mong muốn mà không làm dừng ứng dụng.
  • Error: Thể hiện các lỗi có thể làm gián đoạn luồng thực thi.
  • Critical: Các lỗi nghiêm trọng cần được chú ý ngay lập tức.

3. Áp Dụng Bộ Lọc Ghi Nhật Ký

Nhật ký có thể tạo ra một lượng lớn dữ liệu. Để quản lý điều này, sử dụng bộ lọc để chỉ ghi lại những thông tin quan trọng.

json Copy
{
  "Serilog": {
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "Microsoft": "Information",
        "OpenTelemetry": "Debug"
      }
    },
    "WriteTo": [
      ...
    ]
  }
}

4. Ghi Nhật Ký Có Cấu Trúc

Việc ghi nhật ký có cấu trúc giúp bạn dễ dàng truy vấn và phân tích hơn. Hãy chắc chắn sử dụng các tham số có cấu trúc thay vì nhúng dữ liệu vào văn bản thuần túy.

csharp Copy
logger.LogInformation("Shipment for order '{OrderId}' is already created", request.OrderId);

5. Tránh Ghi Lại Thông Tin Nhạy Cảm

Đảm bảo rằng bạn không ghi lại các thông tin như mật khẩu, số thẻ tín dụng hay thông tin cá nhân nhạy cảm để bảo vệ người dùng và tuân thủ các quy định bảo mật.

6. Ghi Lại Các Lỗi Một Cách Chi Tiết

Khi có lỗi xảy ra, việc ghi nhớ các thông tin chi tiết như ngữ cảnh và thông tin kết nối là rất quan trọng để xử lý sự cố:

Copy
try
{
    // Mã có thể tạo ra ngoại lệ
}
catch (Exception ex)
{
    Log.Error(ex, "An unexpected error occurred");
}

7. Kiểm Soát Kích Thước Và Hiệu Suất Ghi Nhật Ký

Giới hạn kích thước nhật ký bằng cách sử dụng luân chuyển và lưu giữ nhật ký:

csharp Copy
Log.Logger = new LoggerConfiguration()
    .WriteTo.File(
        "logs/service.log",
        rollingInterval: RollingInterval.Day,
        retainedFileCountLimit: 7)
    .CreateLogger();

8. Tập Trung Và Trực Quan Hóa Nhật Ký

Sử dụng các công cụ trực quan hóa như Seq sẽ giúp bạn quản lý và theo dõi nhật ký của mình dễ dàng hơn, cung cấp một cái nhìn tổng quát về tình hình của hệ thống.

Copy
dotnet add package Serilog.Sinks.Seq

9. Xem Xét Các Giải Pháp Thay Thế

Nếu bạn cần một công cụ khác ngoài Seq, có nhiều lựa chọn như ELK Stack, Datadog, New Relic, hoặc Azure Monitor Logs.

Hy vọng rằng những mẹo này sẽ giúp bạn tối ưu hóa việc ghi nhật ký trong ứng dụng .NET Core của mình để nâng cao hiệu suất và bảo mật. Hãy thử áp dụng những phương pháp này trong dự án của bạn và cảm nhận sự khác biệt trong quá trình phát triển và vận hành ứng dụng.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào