繁体   English   中英

无法让 Serilog 读取 appsettings.json 设置

[英]Trouble getting Serilog to read appsettings.json settings

我的控制台应用程序中有以下代码。

// Build configuration
IConfiguration configuration = new ConfigurationBuilder()
    .SetBasePath(ApplicationInfo.DataPath)
    .AddJsonFile("appsettings.json", false, false)
    .Build();

// Configure Serilog
string logFormat = "[{Timestamp:yyyy-MM-dd hh:mm:ss tt}][{Level:u3}] {Message:lj}{NewLine}{Exception}";
Log.Logger = new LoggerConfiguration()
    .ReadFrom.Configuration(configuration)
    .WriteTo.Console(LogEventLevel.Verbose, logFormat)
    .WriteTo.File(ApplicationInfo.GetDataFileName("log"), LogEventLevel.Verbose, logFormat)
    .CreateLogger();

AppHost = Host.CreateDefaultBuilder(args)
    .UseSerilog()
    .ConfigureServices((context, services) =>
    {
        services.AddDbContext<TTApplicationDbContext>(options =>
        {
            options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
        });
        services.Configure<EmailSettings>(configuration.GetSection("EmailSettings"));
        services.Configure<SftpSettings>(configuration.GetSection("FtpSettings"));
    })
    .Build();

这似乎奏效了。 但是,当我将以下部分添加到我的appsettings.json文件时,我没有从框架内获得任何详细的日志记录。 我得到的只是我专门登录我的应用程序的日志记录。

"Serilog": {
  "MinimumLevel": {
    "Default": "Information",
    "Override": {
      "Microsoft": "Information",
      "System": "Information"
    }
  }
}

据我所知,Serilog 忽略了这些设置。 我该如何改变呢?

更新:

如果我在appsettings.json中将Default值更改为Debug ,这实际上控制了我自己对LogDebug()的调用是否显示。 但我不明白为什么微软的日志没有出现。 微软的代码不会使用任何配置的记录器吗?

在配置 DotNet Core App 时,我遇到了同样的问题。 我发现如果我添加了 Nuget Package serilog-extensions-hosting,它也会开始将框架消息输出到日志中。

https://github.com/serilog/serilog-extensions-hosting

我希望这有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM