Serilog,将日志插入多租户应用程序中的特定数据库

Serilog, insert log into specific database in a multi-tenant application

我有一个在 .net core 5 中编写的 WebAPI,它根据通过 JWT 传递的密钥连接到正确的数据库。

es.

--> Key = A dbconnection string "Data Source=1.1.1.1;Database=A;Integrated Security=SSPI;MultipleActiveResultSets=true"
--> Key = B dbconnection string "Data Source=1.1.1.1;Database=B;Integrated Security=SSPI;MultipleActiveResultSets=true"
--> Key = B dbconnection string "Data Source=1.1.1.1;Database=C;Integrated Security=SSPI;MultipleActiveResultSets=true"

等等...

连接存储在另一个数据库中,用于一般配置,包括各种客户端的连接字符串。

现在我们要添加将日志插入各种数据库的 serilog。但是我不知道如何告诉Serilog有动态连接字符串,目前只能插入一个连接字符串。

是否可以在输入日志之前即时检索 Serilog 的连接字符串?

听起来您需要创建 Serilog ILogEventSink 的自定义实现。它定义了一个方法 void Emit(LogEvent logEvent),您可以自己实现该方法以将日志发送到所需的目的地。

完成后,您正在设置 LoggerConfiguration,您将调用 myLoggerConfiguration.Sink(mySink, minLogLevel); 告诉 Serilog 登录到该“接收器”。