无法将我的自定义接收器与配置一起使用

Can't use my custom Sink with config

我想通过 app.config 将我的自定义接收器用于 serilog,但没有成功。 我有一个 class 库,其中 TestSink class 定义为

public class TestSink : ILogEventSink
{
    public TestSink()
    {

    }
    public void Emit(LogEvent logEvent)
    {

    }
}

在控制台应用程序中,我引用了这个程序集(称为 Test.dll)并添加了这个

<add key="serilog:using" value="Test"/>

我的program.cs是

 class Program
{
    static void Main(string[] args)
    {
        try
        {
            var log = new LoggerConfiguration()
                .ReadFrom.AppSettings().CreateLogger();

            Log.Logger = log;

            Log.Information("");
        }
        catch (Exception ex)
        {

            int t = 0;
        }
    }
}

我得到的是"Configuration system failed to initialize"

我做错了什么? 谢谢

你需要在这里做两件事。

  1. <add>元素需要嵌套在<appSettings>下(这里直接配置错误)
  2. 您需要在自定义接收器旁边提供扩展方法,以便 WriteTo.Test() 在记录器配置上可用

配置系统针对扩展方法而不是 class 名称工作,因此 Serilog 的代码和 XML 配置 API(强制)保持同步。