是否有方法从NLog布局变量中的web.config的<ApplicationSettings>
部分获取值?
我已经在我的web.config中存储了SMTP详细信息,并且不希望复制这些设置只是为了在我的NLog.config中使用。
理想情况下,我想做类似的事情:${aspnet-config:SmtpHostServer}
然后从web.config中获取值
答案 0 :(得分:15)
除了创建自己的LayoutRenderer
(见下文)之外,我看不到任何明显的方法。如果您正在进行自己的组装,请不要忘记将以下内容添加到NLog.Config中:
<extensions>
<add assembly="YOURASSEMBLYNAMEHERE" />
</extensions>
希望这有助于其他人:
[LayoutRenderer("aspnet-config")]
public class AspNetConfigValueLayoutRenderer : LayoutRenderer
{
[DefaultParameter]
public string Variable
{
get;
set;
}
protected override void Append(StringBuilder builder, LogEventInfo logEvent)
{
if (this.Variable == null)
{
return;
}
HttpContext context = HttpContext.Current;
if (context == null)
{
return;
}
builder.Append(Convert.ToString(System.Configuration.ConfigurationManager.AppSettings[this.Variable], CultureInfo.InvariantCulture));
}
}
答案 1 :(得分:5)