簡體   English   中英

如何解決 serilog 自定義接收器中的依賴關系?

[英]How to resolve dependency in serilog custom sink?

我有多租戶系統,我需要根據租戶 ID 登錄不同的數據庫。 我已經創建了自定義接收器,但我無法解決自定義接收器中的依賴項 class

CustomLogSink.cs:

public class CustomLogSink : ILogEventSink
    {
        public CustomLogSink(IWorkSpaceProvider provider)
        {

        }
        public void Emit(LogEvent logEvent)
        {
            
        }
    }

程序.cs:

 public class Program
    {
        public static void Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                            .MinimumLevel.Information()
                            .CreateLogger();


            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args)
        {
            return Host.CreateDefaultBuilder(args)
                        .UseSerilog((context, cfg) =>
                        {
                            cfg.WriteTo.Sink(new CustomLogSink());
                        })
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    });
        }
    }

我如何解決 CustomLogSink.cs 中的依賴項?

您需要像這樣將 CustomLogSink 添加到注入 model 中:

services.AddTransient<ILogEventSink, CustomLogSink>();

這個接收器將由 Serilog 自動加載,你不需要 WriteTo。 但是請注意可能的循環參考,就像我來到這里一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM