Asp.net
NLog 在 appsettings 中使用連接字元串名稱
我有一個看起來像這樣的 NLog 數據庫目標:
<target xsi:type="Database" name="database" connectionString="Server=.\SQLEXPRESS;Database=ApplicationOne;Trusted_Connection=True;MultipleActiveResultSets=true;User Id=User0101;Password=PW0101" commandText="INSERT INTO [SchemaOne].[EventLogs](Id, Message, Level, Logger )VALUES(NewID(), @Message, @Level, @Logger)"> <parameter name="@Message" layout="${message}" /> <parameter name="@Level" layout="${level}" /> <parameter name="@Logger" layout="${logger}" /> </target>是否可以將 connectionString 更改為使用我的 appsettings 中的 connectionStringName ?
我的 appsettings 被稱為 dssettings.json ,它在此處包含連接詳細資訊:
"DatabaseConfiguration": { "DatabaseName": "ApplicationOne", "ConnectionName": "DefaultConnection", "ConnectionString": "Server=.\\SQLEXPRESS;Database=ApplicationOne;Trusted_Connection=True;MultipleActiveResultSets=true;User Id=User0101;Password=PW0101" },
更新 NLog.Extension.Logging 版本。1.4.0
使用 NLog.Extension.Logging 版本。1.4.0 然後你現在可以使用
${configsetting}另請參閱:https ://github.com/NLog/NLog/wiki/ConfigSetting-Layout-Renderer
原始答案
在 nuget-package NLog.Appsettings.Standard的幫助下,您通常可以執行以下操作:
<extensions> <add assembly="NLog.Appsettings.Standard" /> </extensions> <targets> <target xsi:type="Database" name="database" connectionString="${appsettings:name=DatabaseConfiguration.ConnectionString}" commandText="INSERT INTO [SchemaOne].[EventLogs](Id, Message, Level, Logger )VALUES(NewID(), @Message, @Level, @Logger)"> <parameter name="@Message" layout="${message}" /> <parameter name="@Level" layout="${level}" /> <parameter name="@Logger" layout="${logger}" /> </target> </targets>但是因為您使用的是特殊的
dssettings.json(而不是 appsettings.json),所以您可能必須實現自己的自定義 NLog 佈局渲染器:https://github.com/NLog/NLog/wiki/How-to-write-a-custom-layout-renderer
也許您可以使用上述 nuget-package 中的原始碼作為 loading 的靈感
dssettings.json。或者可能創建 PullRequest 以添加對指定非預設配置文件名的支持。