当配置日志级别时,Serilog是否自动捕获日志

问题描述 投票:0回答:1

我是第一次使用Serilog并试图弄清楚它是如何工作的。我正在查看配置Serilog的示例ASP.Net Core应用程序。正在从Appsettings.json中读取serilog配置:

"Serilog": {
    "ApplicationName": "app-name",
    "Using": [ "Serilog.Sinks.File" ],
    "MinimumLevel": "Verbose",
    "WriteTo": [
        {
            "Name": "RollingFile",
            "Args": { "pathFormat": "log-{Date}.log" }
        }
    ]
}

Log对象在Startup中定义,“AddSerilog”在“ConfigureServices”方法中定义。但除此之外,没有其他日志信息存在。但是,当我运行应用程序时,自动日志文件将在Solution目录中生成。

问题是Serilog会自动创建这些日志文件吗?

c# logging asp.net-core serilog
1个回答
2
投票

AddSerilogConfigureServices的调用注册了微软ILoggingBuilder的日志记录提供商。这个提供程序(SerilogLoggerProvider)实现了ILoggerProvider及其CreateLogger方法,如下所示:

public ILogger CreateLogger(string name)
{
    return new SerilogLogger(this, _logger, name);
}

从这段代码可以清楚地看出,Serilog的SerilogLogger实现了微软的ILogger界面。

当ASP.NET Core框架需要创建一个logger对象时,它使用ILoggerProvider的实现通过调用ILogger来创建CreateLogger的实例。随着已注册的Serilog提供程序的到位,最终ASP.NET内核需要一个ILogger实例并接收SerilogLogger实例,它提供了ASP.NET Core和Serilog之间的桥梁。

每当发出日志事件时,RollingFile接收器本身都会自动创建配置的日志文件,并自行创建用于创建带时间戳文件的逻辑等。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.