Serilog 记录到控制台,但不记录到文件或数据库

Serilog logs to console, but not to file or database

我正在创建一个带有 ASP.NET 核心的网络 API,但我在让 Serilog 工作时遇到了一些问题。它会很好地输出到控制台。但是,当我告诉它输出到一个文件时,它会创建一个文件,但不会向其中输入任何日志。当我尝试使用 PostgreSQL 数据库时,也会发生同样的情况。有什么问题吗?

appsettings.json

{
  "AllowedHosts": "*",

  "Serilog": {
    "MinimumLevel": "Information",
    "Using": [ "Serilog.Sinks.PostgreSQL" ],
    "WriteTo": [
      {
        "Name": "Console"
      },
      {
        "Name": "File",
        "Args": {
          "path": "Serilogs\AppLogs.log"
        }
      },
      {
        "Name": "PostgreSQL",
        "Args": {
          "connectionString": "Server=fake_server;Port=5432;Database=filter_endpoints;User Id=postgres;Password=fake_password;",
          "tableName": "Logs",
          "needAutoCreateTable": true
        }
      }
    ]
  },

Startup.cs

    public Startup(IConfiguration configuration)
        {
            var configurationBuilder = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json")
                .AddJsonFile("appsettings.Development.json")
                .AddEnvironmentVariables();

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


            Configuration = configurationBuilder.Build();
        }

编辑 我让它与文件一起工作。显然,我有第二个配置代码块,就像 Program.cs 中 Startup.cs 中的代码一样。我把它拿出来了,现在正在对档

尽管如此,我仍然无法让它与数据库一起工作。我将其添加到示例代码中。为了安全起见,我用样本值替换了连接字符串中的一些值。自创建数据库 table 以来,我知道连接字符串是好的。

编辑 我终于让这个工作了。我的代码确实有一个小问题。我相信我应该在邮件 PostgreSQL 包之上使用 Serilog.Syncs.PostgrSQL.Configuration 包。我不确定这是否是一个贡献因素。

主要问题是由于某种原因,同步无法与最新版本的 NpgSQL 一起使用(我在 Github 同步问题中发现了这一点)。我暂时降级了 NpgSQL。希望他们能尽快解决这个问题。

感谢所有试图帮助我的人。

你试过告诉 Serilog 它应该使用哪个接收器吗? :-)

"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],

来自 Serilog 文档:https://github.com/serilog/serilog-settings-configuration#serilogsettingsconfiguration--

我终于让它工作了。我的代码确实有一个小问题。我相信我应该在邮件 PostgreSQL 包之上使用 Serilog.Syncs.PostgrSQL.Configuration 包。我不确定这是否是一个贡献因素。

主要问题是出于某种原因,同步无法与最新版本的 NpgSQL 一起使用(我在 Github 同步问题中发现了这一点)。我暂时降级了 NpgSQL。希望他们能尽快解决这个问题。