如何设置 Serilog 在记录消息时调用 SQL 服务器中的存储过程?
How do you set up Serilog to call a stored procedure in SQL Server when logging messages?
如何设置 Serilog 在记录消息时调用 SQL 服务器中的存储过程?我看到了如何使用 MS SQL Server sink 将消息直接存储在数据库 table 中,但我想改为调用存储过程。
我不知道 Serilog 有任何预建的存储过程接收器。
您可以通过实现 ILogEventSink
接口自己调用存储过程:
class StoredProcedureSink : ILogEventSink
{
public StoredProcedureSink(/* Connection info etc. */) { ... }
public void Emit(LogEvent logEvent)
{
// Invoke sproc using logEvent data
}
}
这些是在配置时插入的:
var sink = new StoredProcedureSink(/* ... */);
Log.Logger = new LoggerConfiguration()
.WriteTo.Sink(sink)
.CreateLogger();
如何设置 Serilog 在记录消息时调用 SQL 服务器中的存储过程?我看到了如何使用 MS SQL Server sink 将消息直接存储在数据库 table 中,但我想改为调用存储过程。
我不知道 Serilog 有任何预建的存储过程接收器。
您可以通过实现 ILogEventSink
接口自己调用存储过程:
class StoredProcedureSink : ILogEventSink
{
public StoredProcedureSink(/* Connection info etc. */) { ... }
public void Emit(LogEvent logEvent)
{
// Invoke sproc using logEvent data
}
}
这些是在配置时插入的:
var sink = new StoredProcedureSink(/* ... */);
Log.Logger = new LoggerConfiguration()
.WriteTo.Sink(sink)
.CreateLogger();