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 登录到该“接收器”。
我有一个在 .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 登录到该“接收器”。