Oracle的Serilog接收器
我一直在寻找连接到Oracle的serilog接收器,但找不到任何人。有没有办法连接到Oracle数据库 如果没有,是否可以至少与MySql连接Oracle的Serilog接收器,oracle,serilog,Oracle,Serilog,我一直在寻找连接到Oracle的serilog接收器,但找不到任何人。有没有办法连接到Oracle数据库 如果没有,是否可以至少与MySql连接 谢谢,目前Oracle和MySql都没有Serilog接收器 最好的选择是基于MS SQL Server接收器编写一个:为目标数据库使用正确的ADO.NET连接器 应该很简单。oracle的Serilog sink现在可用 新的oracle接收器是netstandard2library,它提供了一种干净的方式将Serilog事件发送到oracle 11
谢谢,目前Oracle和MySql都没有Serilog接收器 最好的选择是基于MS SQL Server接收器编写一个:为目标数据库使用正确的ADO.NET连接器
应该很简单。oracle的Serilog sink现在可用 新的oracle接收器是
netstandard2
library,它提供了一种干净的方式将Serilog事件发送到oracle 11(可能还有12)
您可以参考以下链接了解更多信息
以下是我使用Serilog登录Oracle数据库的dotnet core api POC的片段 首先下载所需的软件包-
dotnet add package Serilog.AspNetCore
dotnet add pacakage Serilog.Settings.Configuration
dotnet add package Serilog.Sinks.Oracle
使用Program.cs类中的代码
using Serilog;
主方法中的代码-
var connectionString =
@"user id=system;password=oracle;data source=
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL = TCP)(HOST = localhost)
(PORT = 49161)))(CONNECT_DATA=(SERVICE_NAME = xe)))";
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.WriteTo.Oracle(cfg =>
cfg.WithSettings(connectionString)
.UseBurstBatch()
.CreateSink())
.CreateLogger();
Log.Information("Writing Logs in Oracle Database...")
其实不容易,我试过了。OracleBulkCopy不会插入到具有触发器的表中。我尝试使用触发器以序列的方式递增ID主键。然后我尝试使用guid,结果证明这很困难,因为在oracle中将guid存储为原始(16),而在c#中,将其放在字节数组中。我无法让Oracle将该id列(存储为System.Byte[])映射到raw。这意味着复制MS SQL Server接收器不会那么简单,也不是说它无法完成。我不确定我是否会继续努力。