Насколько я могу судить, с Log4JXmlEventLayout связаны некоторые свойства (информация трассировки стека, класс вызова, время и т. Д.), Но это все.Я изучил, как включить дополнительную информацию, но кажется, что это невозможно.
Возможная конфигурация выглядит следующим образом:
<target name ="xmlFile" xsi:type="File"
fileName="${tempdir}/${processname}/log.xml"
archiveFileName="${tempdir}/${processname}/archive/log_{#####}.xml"
archiveAboveSize="10000000"
layout="${log4jxmlevent:includeSourceInfo=true:includeCallSite=true:includeMDC=true:appInfo=true:includeNDC=true:includeNLogData=true}"/>
Однако я обнаружил, что только NLog 2.0 на самом деле будет использовать такие атрибуты, как "includeSourceInfo".Мне показалось, что в NLog 1.0, когда они были установлены в true, полученный xml содержал только дату, уровень и сообщение.
Одна из причин не использовать Log4JXmlEventLayout заключается в том, что он ничего не делает сисключения, т. е. если вы позвоните
logger.ErrorException("This shouldn't happen", exception);
, регистратор запишет «Этого не должно быть», но информация об исключении исчезнет.
Возможно, можно было бы создать пользовательскийОбертка XML вокруг данных, которые вы хотите.Я не сделал этого, но я думаю об этом просто из-за ограничений вокруг Log4JXmlEventLayout.