【问题标题】:Serilog Logger - Requested value 'True' was not foundSerilog 记录器 - 未找到请求的值“真”
【发布时间】:2021-08-11 20:51:42
【问题描述】:

我在调用 Serilog.Log.Logger() 时收到此错误:

这是 .NET Core 2.1

System.ArgumentException:未找到请求的值“True”。

我的Program.cs

public class Program
{
    private static IConfiguration Configuration => new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("appsettings.json", false, true)
        .AddJsonFile(
            $"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json",
            true, true)
        .AddEnvironmentVariables()
        .Build();
        
    public static void Main(string[] args)
    {
        Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(Configuration).CreateLogger();

        try
        {
            Log.Information("Web hosting is starting up.");
            CreateWebHostBuilder(args).Build().Run();
        }
        catch (Exception ex)
        {
            Log.Fatal(ex, "A fatal exception has forced unexpected host termination.");
            throw;
        }
        finally
        {
            Log.Information("Web hosting is shutting down.");
            Log.CloseAndFlush();
        }
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
}

appsettings.json

{
    "Logging": {
        "LogLevel": {
            "Default": "Warning"
        }
    },
    "AllowedHosts": "*",
    "Serilog": {
        "MinimumLevel": {
            "Default": "Information",
            "Override": {
                "Microsoft.EntityFrameworkCore": "Warning",
                "Microsoft.AspNetCore.StaticFiles": "Warning"
            }
    },
    "WriteTo": [
        {
            "Name": "Elasticsearch",
            "Args": {
                "nodeUris": "https://XXXXXXXXXXXXXX.com",
                "indexFormat": "log-XXXXXXXXXX-{0:yyyy.MM.dd}",
                "autoRegisterTemplate": true,
                "autoRegisterTemplateVersion": true
            }
        }
    ],
    "Enrich": [
        "FromLogContext",
        "WithMachineName",
        "WithEnvironmentUserName"
    ],
    "Properties": {
        "Application": "{myappname}"
    }
}

这里是这个项目中安装的包(请原谅截图)

C:\repos\myapp\myapp>dotnet list package
Project 'myapp' has the following package references
[netcoreapp2.1]: 
Top-level Package                                         Requested   Resolved
> BuildBundlerMinifier                                    3.2.435     3.2.435
> Microsoft.AspNetCore.App                          (A)   [2.1.1, )   2.1.1
> Microsoft.AspNetCore.Razor.Design                       2.1.2       2.1.2
> Microsoft.NETCore.App                             (A)   [2.1.0, )   2.1.0
> Serilog.AspNetCore                                      3.2.0       3.2.0
> Serilog.Enrichers.Environment                           2.1.3       2.1.3
> Serilog.Sinks.Elasticsearch                             8.0.1       8.0.1

【问题讨论】:

    标签: asp.net-core elasticsearch serilog


    【解决方案1】:
    "autoRegisterTemplateVersion": true
    

    问题与 appsettings.json 文件中的 autoRegisterTemplateVersion 参数有关。

    Serilog.Sinks.Elasticsearch JSON appsettings.json configuration可以看出autoRegisterTemplateVersion参数应该是字符串类型:

    autoRegisterTemplateVersion 参数值从true 更改为"ESv2" 后,问题就消失了。

    【讨论】:

    • 这就是问题所在。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多