gpt4 book ai didi

json - .net Core 和 Serilog 电子邮件接收器 - json 配置

转载 作者:行者123 更新时间:2023-12-01 08:47:25 27 4
gpt4 key购买 nike

我正在使用 .net Core 2.0 和 Serilog 电子邮件接收器。我在使用 appsettings.json 配置电子邮件接收器时遇到问题.来自 program.cs 的相同配置正在工作,同时来自 appsetting.json不是。

Here is code from appsettings.json

Here is code from program.cs

最佳答案

设置系统 ( ReadFrom.Configuration() ) 确实只尝试 调用方法和扩展方法它可以发现和传递配置文件提供的参数 .

不幸的是,它暂时只支持基本类型(可转换为/从 string 和一些更具体的情况),因此,类型为 EmailConnectionInfo 的参数无法提供。

但是,作为一种解决方法,如果您只需要传入几个参数,您可以创建自己的扩展方法,该方法接受您需要的参数并从配置系统调用它。

在您的情况下,您需要执行以下操作:

首先,定义一个 extension method EmailCustom(...)可以插上的WriteTo (类型为 Serilog.Configuration.LoggerSinkConfiguration )并返回 LoggerConfiguration .

这看起来像(未经测试,没有使用等:P):

namespace Serilog{
public static class MyCustomExtensions
{
public static LoggerConfiguration EmailCustom(this LoggerSinkConfiguration sinkConfiguration, string param1, int param2, LogEventLevel restrictedToMinimumLevel){
// the actual call to configure the Email sink, passing in complex parameters
return sinkConfiguration.Email(... ... , restrictedToMinimumLevel , EmailConnectionInfo(){
Foo = "bar",
Baz = param1,
Qux = param2,
}
);
}
}
}

从那时起,您应该能够编写 C# 代码,例如:
new LoggerConfiguration()
.WriteTo.EmailCustom(param1: "my param1", param2: 42)
// ...
.CreateLogger();

一旦你开始工作,你实际上可以在 中定义该方法调用json 感谢 Serilog.Settings.Configuration
在那种情况下,这看起来像
{
"Serilog": {
"Using" : ["TheNameOfTheAssemblyThatContainsEmailCustom"],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "EmailCustom",
"Args": {
"param1": "my param1",
"param2": 42,
"restrictedToMinimumLevel": "Verbose"
}
}]
}
}

该策略也可以应用于 Serilog 的其他接收器和其他配置部分。

您可以在此处找到有关配置系统的更多信息:
  • the project's README Serilog.Settings.Configuration
  • examples of what can be done through configuration (无耻的插头:p)
  • 关于json - .net Core 和 Serilog 电子邮件接收器 - json 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50387469/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com