Nlog.Mongo 从 appsetting.json 获取连接
Nlog.Mongo get connection from appsetting.json
我正在 运行安装 .net core 2.0 应用程序并使用 NLog Mongo 进行日志记录。有办法从我的应用程序设置文件中获取 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 属性 已设置
使用 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
一个替代方案,如果你不能更新你的 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();
我正在 运行安装 .net core 2.0 应用程序并使用 NLog Mongo 进行日志记录。有办法从我的应用程序设置文件中获取 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 属性 已设置
使用 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
一个替代方案,如果你不能更新你的 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();