我正在运行.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属性
答案 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();