Serilog配置Log Level后是否自动抓取日志

Does Serilog captures log automatically when configured with Log Level

我是第一次使用 Serilog 并试图弄清楚它是如何工作的。我正在查看配置了 Serilog 的示例 ASP.Net 核心应用程序。正在从 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”方法中定义。但除此之外,不存在其他日志信息。但是,当我 运行 应用程序自动日志文件正在解决方案目录中生成时。

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

ConfigureServices 中对 AddSerilog 的调用使用 Microsoft 的 ILoggingBuilder. This provider (SerilogLoggerProvider), implements ILoggerProvider 及其 CreateLogger 方法注册了一个日志提供程序,如下所示:

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

从这段代码可以看出Serilog的SerilogLogger实现了微软的ILogger接口

当ASP.NET核心框架需要创建记录器对象时,它使用ILoggerProvider的实现通过调用CreateLogger创建ILogger的实例。在注册的 Serilog 提供程序就位后,ASP.NET Core 请求 ILogger 的实例并接收 SerilogLogger 的实例,这在 ASP.NET Core 之间提供了桥梁和 Serilog。

RollingFile 接收器本身会在发出日志事件时自动创建配置的日志文件,并相应地使用其自己的逻辑来创建带时间戳的文件等。