NLog выдает ошибку при загрузке файла конфигурации XmlLayout - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь настроить 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 из файла конфигурации, я могу создать файл частичного журнала только с одним элементом XML ERRORLOG с двумя указанными атрибутами.Однако я не нашел способа включить теги ELEMENT в мои выходные файлы журнала.

NLog.dll - v4.6.0.9068

C # .NET - v4.7.2

Буду признателен за любые идеи или помощь!

-Kasey911

1 Ответ

0 голосов
/ 05 марта 2019

Snakefoot верен,

это было изменено после 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>
...