Lor*_*eno 21 c# logging serilog .net-core
我希望我的应用程序能够记录到文件,所以我开始寻找比默认的 .NET Core 2.2 日志框架更多的东西。我看到 Serilog 可能会完成这项工作。但是,我找不到任何关于如何使用依赖注入在 .NET Core 控制台应用程序中设置 Serilog 的文档。我看到的只是 ASP.NET 材料,这可能不是我需要的。
我开始自己做。我安装了(Nuget):
我创建了一个扩展ServiceCollection
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);
});
}
Run Code Online (Sandbox Code Playgroud)
但是,日志记录有效:
dispose应该true。通常,我希望 NET Core 的依赖注入框架来处理服务的处理。我不确定builder.SetMinimumLevel(它不使用 Serilog 枚举)。
我们在创建LoggerConfiguration对象时设置记录器级别。
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Debug) // restricted... is Optional
(...)
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
顺便提一句。值得指出配置基础中的以下部分
Logger 与 sink 最小值- 重要的是要意识到只能为 sinks 提高日志记录级别,而不能降低。因此,如果记录器的 MinimumLevel 设置为 Information,那么将 Debug 作为其指定级别的接收器仍然只能看到信息级别的事件。这是因为记录器级别的配置控制哪些日志语句将导致事件的创建,而接收器级别的配置仅过滤这些。要创建具有更详细级别的单个记录器,请使用单独的 LoggerConfiguration。
我不确定builder.AddSerilog。
这对我有用。
using Serilog;
(...)
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
(...)
.CreateLogger();
(...)
return new HostBuilder()
.ConfigureHostConfiguration(...)
.ConfigureServices(...)
.UseSerilog();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19477 次 |
| 最近记录: |