Nlog.Mongo从appsetting.json

时间:2018-12-17 13:52:35

标签: mongodb nlog

我正在运行.net core 2.0应用程序,并使用NLog Mongo进行日志记录。有没有办法从我的appsettings文件中将连接字符串获取到NLog.Mongo?文档说,我可以指定一个连接名称(connectionName)以从配置文件(https://github.com/loresoft/NLog.Mongo)中获取。

我的appsettings.Development.json具有以下内容:

  "DatabaseSettings": {
    "ConnectionString": "mongodb://localhost:27017",
    "Database": "myDbName",
    "IsSSL": false
  }

nlog.config

<target xsi:type="Mongo"
    name="mongoDefault"
    connectionName="DatabaseSettings"
    cappedCollectionSize="26214400">
  <property name="ThreadID" layout="${threadid}" bsonType="Int32" />
  <property name="ThreadName" layout="${threadname}" />
  <property name="ProcessID" layout="${processid}" bsonType="Int32" />
  <property name="ProcessName" layout="${processname:fullName=true}" />
  <property name="UserName" layout="${windows-identity}" />
</target>

运行应用程序时出现错误:

NLog.NLogConfigurationException:无法解析MongoDB ConnectionString。请确保已设置ConnectionString属性

2 个答案:

答案 0 :(得分:1)

使用NLog.Mongo版本重试。 4.6.0.68

https://www.nuget.org/packages/NLog.Mongo/

应包括以下PR:

https://github.com/loresoft/NLog.Mongo/pull/22

更新NLog.Extension.Logging版本。 1.4.0

使用NLog.Extension.Logging版本。 1.4.0,那么您现在可以使用${configsetting}

另请参阅:https://github.com/NLog/NLog/wiki/ConfigSetting-Layout-Renderer

答案 1 :(得分:0)

一种替代方法,如果您无法更新NLog.Mongo软件包,则在@Rolf Kristensen解决方案之前,我在Startup.cs(ConfigureServices)上使用此代码

string conn = Configuration.GetSection("DatabaseSettings").GetValue<string>("ConnectionString");
string dbName = Configuration.GetSection("DatabaseSettings").GetValue<string>("Database");
var config = NLog.LogManager.Configuration;
var dbTarget = (NLog.Mongo.MongoTarget)config.FindTargetByName("mongoDefault");
dbTarget.ConnectionString = conn;
dbTarget.DatabaseName = dbName;
NLog.LogManager.ReconfigExistingLoggers();