我正在运行一个.net核心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属性
发布于 2018-12-19 06:25:09
再次尝试使用NLog.Mongo ver。4.6.0.68
https://www.nuget.org/packages/NLog.Mongo/
应包括下列公共关系:
https://github.com/loresoft/NLog.Mongo/pull/22
更新NLog.Extension.Logging ver.1.4.0
和NLog.Extension.Logging ver。1.4.0然后您现在可以使用${configsetting}了
另见:https://github.com/NLog/NLog/wiki/ConfigSetting-Layout-Renderer
发布于 2018-12-19 16:37:42
如果您不能更新您的NLog.Mongo包,在@Rolf解决方案之前,我会在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();https://stackoverflow.com/questions/53816637
复制相似问题