首页 > 解决方案 > .net core 2.1.2 serilog postgresql sink 自定义列问题

问题描述


使用 .net core 2.1.2、Serilog 2.9 和 Serilog.Sinks.PostgreSQL 2.1。
appsettings.json我下面的 Serilog 部分。在 Program.cs 中

Log.Logger = new LoggerConfiguration()
               .ReadFrom.Configuration(configuration, "Serilog")
               .Enrich.FromLogContext()
               .CreateLogger();


我需要添加一个自定义列machine_name。但是,创建的表没有此附加列。我应该在数据库中手动添加它吗?
我可以通过填写这个 machine_name 字段来丰富我的日志吗?

感谢和问候...

  "Serilog": {
    "Using": [ "Serilog.Sinks.PostgreSQL" ],
    "MinimumLevel": "Information",
    "WriteTo": [
      {
        "Name": "PostgreSQL",
        "Args": {
          "connectionString": "Server=localhost;Port=55001;Database=mydb;Username=postgres;Password=postgres",
          "tableName": "public.mylogs",
          "needAutoCreateTable": true,
          "batchPostingLimit": 1,
          "columnOptionsSection": {
            "customColumns": [              
              {
                "ColumnName": "machine_name",
                "DataType": "nvarchar",
                "DataLength": 256,
                "AllowNull": true

              }
            ]
          }
        }
      }
    ]   
  }```

标签: postgresql.net-coreserilog

解决方案


在你的 BuildWebHost 中试试这个

 return WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration.ReadFrom
            .Configuration(hostingContext.Configuration))
            .Build();

推荐阅读