配置 Serilog 从应用程序 json 文件读取会出现异常 System.InvalidOperationException: 'Type Sample.CustomPolicy, Sample was not find.'

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

我是 Serilog 新手,一直在尝试一些代码来使用基于 GitHub 包的应用程序设置 Json 文件来配置 Serilog (https://github.com/serilog/serilog-settings-configuration)。

我有一个 .NET 7.0 控制台应用程序。我添加了以下 NuGet 包。

  • Microsoft.扩展.配置
  • Microsoft.Extensions.Configuration.Json
  • Microsoft.Extensions.Configuration.Xml Serilog
  • Serilog.Enrichers.Environment
  • Serilog.Enrichers.Thread
  • Serilog.设置.配置
  • Serilog.Sinks.Console
  • Serilog.Sinks.File

appsettings.json的内容是

{
  "Appsettings": {
    "client_id": "",
    "client_secret": ""
  },
  "Serilog": {
    "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
    "MinimumLevel": "Debug",
    "WriteTo": [
      { "Name": "Console" },
      {
        "Name": "File",
        "Args": { "path": "Logs/log.txt" }
      }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
    "Destructure": [
      {
        "Name": "With",
        "Args": { "policy": "Sample.CustomPolicy, Sample" }
      },
      {
        "Name": "ToMaximumDepth",
        "Args": { "maximumDestructuringDepth": 4 }
      },
      {
        "Name": "ToMaximumStringLength",
        "Args": { "maximumStringLength": 100 }
      },
      {
        "Name": "ToMaximumCollectionCount",
        "Args": { "maximumCollectionCount": 10 }
      }
    ]
  }
}

在 Program.cs Main 函数中,代码是

var ConfigBuilder = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var logger = new LoggerConfiguration().ReadFrom.Configuration(ConfigBuilder).CreateLogger();

代码语句

var logger = LoggerConfiguration().ReadFrom.Configuration(ConfigBuilder).CreateLogger()
给出了异常

System.InvalidOperationException
  HResult=0x80131509
  Message=Type Sample.CustomPolicy, Sample was not found.
  Source=Serilog.Settings.Configuration
  StackTrace:
   at Serilog.Settings.Configuration.StringArgumentValue.ConvertTo(Type toType, ResolutionContext resolutionContext)
   at Serilog.Settings.Configuration.ConfigurationReader.<>c__DisplayClass22_2.<CallConfigurationMethods>b__3(<>f__AnonymousType9`2 <>h__TransparentIdentifier0)
   at System.Linq.Enumerable.SelectListPartitionIterator`2.ToList()
   at Serilog.Settings.Configuration.ConfigurationReader.CallConfigurationMethods(ILookup`2 methods, IReadOnlyCollection`1 configurationMethods, Object receiver)
   at Serilog.Settings.Configuration.ConfigurationReader.ApplyDestructuring(LoggerConfiguration loggerConfiguration)
   at Serilog.Settings.Configuration.ConfigurationReader.Configure(LoggerConfiguration loggerConfiguration)
   at Serilog.Configuration.LoggerSettingsConfiguration.Settings(ILoggerSettings settings)
   at Serilog.ConfigurationLoggerConfigurationExtensions.Configuration(LoggerSettingsConfiguration settingConfiguration, IConfiguration configuration, ConfigurationReaderOptions readerOptions)
   at TestConsoleApp.Program.Main(String[] args) in C:\Development\sdiServiceFramework\TestConsoleApp\Program.cs:line 46

不确定我错过了什么或做错了什么。任何帮助将不胜感激。

问候 席德

serilog
1个回答
0
投票
{
  "Name": "With",
  "Args": { "policy": "Sample.CustomPolicy, Sample" }
},

这部分来自示例。只需将其删除即可。

© www.soinside.com 2019 - 2024. All rights reserved.