加载XmlLayout配置文件时,NLog引发错误

时间:2019-03-04 23:50:14

标签: nlog

我正在尝试将NLog配置为以XML格式输出错误日志,但是NLog无法正确加载配置。

这是我配置的LAYOUT部分:

<layout xsi:type="XmlLayout" includeAllProperties="true" propertiesElementKeyAttribute="" propertiesElementName="{0}" elementName="errorlog">
            <attribute name="time" layout="${longdate}" />
            <attribute name="level" layout="${level:upperCase=true}" />
            <element name="processname" value="${processname}" />
            <element name="logger" value="${logger}" />
            <element name="message" value="${message}" />               
        </layout>

调用LogManager.GetCurrentClassLogger()方法时,会产生以下错误:

  

XmlLayout上不支持参数名称

以下是NLog错误日志文件中捕获的其他详细信息:

    2019-03-04 16:25:39.9645 Trace   Scanning Property Renderers 'System.Collections.ObjectModel.ReadOnlyCollection`1[NLog.LayoutRenderers.LayoutRenderer]' System.Collections.ObjectModel
2019-03-04 16:25:39.9645 Trace   Scanning LevelLayoutRenderer 'Layout Renderer: ${level}'
2019-03-04 16:25:39.9645 Debug Setting 'XmlLayout.name' to 'processname'
2019-03-04 16:25:39.9835 Warn Error when setting 'processname' on attibute 'name' Exception: System.NotSupportedException: Parameter name not supported on XmlLayout
   at NLog.Internal.PropertyHelper.SetPropertyFromString(Object obj, String propertyName, String value, ConfigurationItemFactory configurationItemFactory)
   at NLog.Config.LoggingConfigurationParser.ConfigureObjectFromAttributes(Object targetObject, ILoggingConfigurationElement element, Boolean ignoreType)
2019-03-04 16:25:39.9835 Error Parsing configuration from C:\Users\<user>\Documents\Visual Studio 2017\Projects\TestingNlog\TestingNlog\bin\Debug\NLog.config failed. Exception: NLog.NLogConfigurationException: Exception when parsing C:\Users\<user>\Documents\Visual Studio 2017\Projects\TestingNlog\TestingNlog\bin\Debug\NLog.config.  ---> System.NotSupportedException: Parameter name not supported on XmlLayout

如果从配置文件中删除ELEMENT标记,则仅使用具有2个指定属性的单个XML元素ERRORLOG就能生成部分日志文件。但是,我还没有找到在输出日志文件中包含ELEMENT标记的方法。

  

NLog.dll-v4.6.0.9068

     

C#.NET-v4.7.2

任何想法或协助将不胜感激!

-Kasey911

1 个答案:

答案 0 :(得分:0)

蛇足是正确的

此内容已在NLog 4.6 RC 1之后更改

在NLog 4.6 RC 1中

<layout xsi:type="XmlLayout" elementName='logevent'>
        <attribute name="time" layout="${longdate}" />
        <attribute name="level" layout="${level:upperCase=true}"/>
        <element elementName="message" elementValue="${message}" />
</layout>

在NLog 4.6 RC 2(尚未发布)中,可能还有RTM

<layout xsi:type="XmlLayout" elementName='logevent'>
        <attribute name="time" layout="${longdate}" />
        <attribute name="level" layout="${level:upperCase=true}"/>
        <element name="message" value="${message}" />
</layout>