Tôi muốn ứng dụng của mình có khả năng đăng nhập vào một tệp, vì vậy tôi bắt đầu tìm kiếm thứ gì đó hơn khung ghi nhật ký .NET Core 2.2 mặc định. Tôi thấy rằng Serilog có thể làm công việc. Tuy nhiên, tôi không thể tìm thấy bất kỳ tài liệu nào về cách thiết lập Serilog trong ứng dụng .NET Core Console với Dependency Injection. Tất cả những gì tôi thấy là các tài liệu ASP.NET, có lẽ không phải là thứ tôi cần.
Tôi bắt đầu tự làm điều đó. Tôi đã cài đặt (Nuget):
- Sê-ri
- Serilog.Extensions.Logging
- Serilog.Sinks.File
- Serilog.Sinks.Console (để sử dụng Serilog cho tất cả nhật ký của tôi)
Tôi đã tạo một phần mở rộng choServiceCollection
public static void AddLogging(this IServiceCollection services, Microsoft.Extensions.Logging.LogLevel logLevel)
{
var serilogLogger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.File("log.txt")
.CreateLogger();
services.AddLogging(builder =>
{
builder.SetMinimumLevel(logLevel);
builder.AddSerilog(logger: serilogLogger, dispose: true);
});
}
Ghi nhật ký hoạt động, tuy nhiên:
- mức độ đăng nhập không phải là những gì tôi đặt nó. Có vẻ như serilog đang sử dụng cấp INFO, mặc dù tôi muốn có DEBUG. Tại sao thiết lập của tôi không được tôn trọng? Rốt cuộc, tôi vẫn đang sử dụng khung ghi nhật ký của NET Core, vì vậy tôi đang sử dụng nó để thiết lập mức ghi nhật ký
- Tôi thực sự đang thực hiện thiết lập này một cách chính xác? Tôi không thực sự chắc chắn nếu
dispose
nêntrue
. Nói chung, tôi muốn khuôn khổ Dependency Injection của NET Core đảm nhiệm việc xử lý các dịch vụ.
builder.SetMinimumLevel
có mức độ ưu tiên cao hơn cài đặt của Serilog. Vì vậy, tôi có thể đặt ghi nhật ký Verbose trên Serilog và mức độ mong muốn thực tế khi đăng nhập Microsoft để có được thứ tôi cần. Tôi thấy bạn đang ở trong một số ứng dụng được lưu trữ, như ASP.NET. Có lẽ bạn đang sử dụng gói Serilog.AspNetCore. Trong trường hợp của tôi, tôi không có máy chủ nào.