【问题标题】:Serilog to MongoDB AtlasSerilog 到 MongoDB Atlas
【发布时间】:2019-12-17 11:43:43
【问题描述】:

我正在尝试让 Serilog 在 .Net Core API 中将消息记录到 MongoDB Atlas DB 中的集合中。

我需要在 appsettings.json 中设置连接字符串以使其可配置。我就是这样做的

"Serilog": {
    "Using": [ "Serilog.Sinks.MongoDB" ],
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Error",
        "System": "Warning"
      }
    },
    "WriteTo": [
      {
        "Name": "MongoDB",
        "Args": {
          "databaseUrl": "mongodb://<user>:<password>@<AtlasServer>:27017/logs",
          "collectionName": "log"

        }
      }
    ]
  }

以上没有成功登录。但是,如果我将它指向 MongoDB 的本地实例,并使用相同的方法/连接字符串格式,那么它会记录下来。

我完成了在 MongoDB Atlas 中创建集合的所有步骤,创建了集合、用户和白名单必要的 IP。

关于我在这里做错了什么有什么想法吗?

【问题讨论】:

    标签: json mongodb .net-core serilog


    【解决方案1】:

    以防万一其他人遇到这种情况,我将发布问题的解决方案,最终解决方案很简单,但很难找到。

    事实证明,Serilog MongoDB Sink 使用 .Net 驱动程序 2.3 版。

    所以,在 Atlas 中的连接字符串生成器上,我为 .NET 选择了那个版本,它生成了一个没有“+srv”部分的连接字符串。

    希望对某人有所帮助!

    【讨论】:

    • 对于好奇的,一个成功的连接字符串开始像:"mongodb://{userName}:{pswd}@{cluster}..." 而不是"mongodb+srv://{userName }:{pswd}@{cluster}..."。我能够与驱动程序版本 2.4 成功连接 str,因为根据 Atlas 站点,“MongoDB 3.4 及更高版本不支持 2.3”。
    猜你喜欢
    • 1970-01-01
    • 2020-12-24
    • 2020-10-07
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    相关资源
    最近更新 更多