标签: serilog-postgresql

为什么 Serilog PostgreSQL 接收器无法通过配置工作?

我已经通过代码尝试了用于 Serilog 的 PostgreSQL 接收器,它的工作方式就像一个魅力。
这是工作代码:

    static void Main(string[] args)
    {
        var connectionString = "Server=localhost; Port=5432; Database=subscriptions_log; User Id=postgres;Password=postgres";
        string tableName = "errorlog";

        IDictionary<string, ColumnWriterBase> columnWriters = new Dictionary<string, ColumnWriterBase>
        {
            {"message", new RenderedMessageColumnWriter(NpgsqlDbType.Text) },
            {"level", new LevelColumnWriter(true, NpgsqlDbType.Varchar) },
            {"raise_date", new TimestampColumnWriter(NpgsqlDbType.Timestamp) },
            {"exception", new ExceptionColumnWriter(NpgsqlDbType.Text) }
        };

        using var log = new LoggerConfiguration()
            .WriteTo.Console()
            .WriteTo.PostgreSQL(connectionString, tableName, columnWriters)
            .CreateLogger();

        log.Information("Hello, Serilog!");
    }
Run Code Online (Sandbox Code Playgroud)

但是,当我通过配置文件使用它时,serlig 在数据库中创建表,但由于未找到“Npgsql.NpgsqlBinaryImporter.Complete()”,因此不插入任何行。
“这是详细的错误:

Exception while emitting periodic batch from Serilog.Sinks.PostgreSQL.PostgreSQLSink:
        System.MissingMethodException:
        Method not found: 'Void Npgsql.NpgsqlBinaryImporter.Complete()'. …
Run Code Online (Sandbox Code Playgroud)

.net serilog serilog-postgresql

4
推荐指数
1
解决办法
3797
查看次数

标签 统计

.net ×1

serilog ×1

serilog-postgresql ×1