Oracle的Serilog接收器

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的serilog接收器,但找不到任何人。有没有办法连接到Oracle数据库

如果没有,是否可以至少与MySql连接


谢谢,

目前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接收器不会那么简单,也不是说它无法完成。我不确定我是否会继续努力。