NLog-在邮件部分中将appSetting用于EnableSsl无效

时间:2019-07-05 09:20:15

标签: c# asp.net email logging nlog

我正在使用nlog通过电子邮件跟踪错误-所有配置都存储在.pdf中。我正在尝试在nlog邮件部分中将web.config用作密钥appSetting,但没有考虑到该特定密钥(但对于其他密钥(例如smtpServer,from,to 、.)也可以正常使用。 ..)

已安装以下软件包:

enableSsl

文档:
Mail-target

AppSetting-Layout-Renderer

环境是C#.NET

崩溃的原因是:NLog<br/> NLog.Extended // required to use appSetting<br/> Nlog.Targets.Syslog<br/> Nlog.Web<br/>
可以与enableSsl="${appsetting:Mail.Ssl.Enabled}"

一起使用

web.config:

enableSsl="False"

nlog-internal.log:

  

在服装上设置“ $ {appsetting:Mail.Ssl.Enabled}”时出错   'enableSsl'异常:NLog.NLogConfigurationException:错误时   在Mail Target [mail]上设置属性'EnableSsl'--->   System.FormatException:$ {appsetting:Mail.Ssl.Enabled}无效   布尔值。 ---> System.FormatException:字符串不是   被识别为有效的布尔值。          在System.Boolean.Parse(字符串值)          在System.ComponentModel.BooleanConverter.ConvertFrom(ITypeDescriptorContext   上下文,CultureInfo文化,对象值)          ---内部异常堆栈跟踪的结尾---          在System.ComponentModel.BooleanConverter.ConvertFrom(ITypeDescriptorContext   上下文,CultureInfo文化,对象值)          在NLog.Internal.PropertyHelper.TryTypeConverterConversion(Type type,String value,Object&newValue)          在NLog.Internal.PropertyHelper.SetPropertyFromString(Object obj,String propertyName,String value,ConfigurationItemFactory   configurationItemFactory)          ---内部异常堆栈跟踪的结尾---          在NLog.Internal.PropertyHelper.SetPropertyFromString(Object obj,String propertyName,String value,ConfigurationItemFactory   configurationItemFactory)          在NLog.Config.LoggingConfigurationParser.ConfigureObjectFromAttributes(Object   targetObject,ILoggingConfigurationElement元素,布尔值   ignoreType)

1 个答案:

答案 0 :(得分:1)

enableSsl不是Layout类型,而是boolean类型。 (请参阅docs)。

这意味着它不可布局,因此您不能为此值使用布局渲染器。

您可以(作为例外)配置中的变量,因为在读取配置时会内联这些变量。例如

<variable name="myvar" value="true" /> 
...
<target name="mail" xsi:type="Mail" enableSsl="${myvar}" ../>

如果需要动态更改配置,则需要一些代码。