【问题标题】:Nlog does not create Root element in xml file document while writting logs for different log level in same fileNlog 不会在 xml 文件文档中创建 Root 元素,同时在同一文件中为不同的日志级别写入日志
【发布时间】:2019-08-07 05:28:48
【问题描述】:

Nlog 为不同的日志级别成功写入日志,但不会在同一文件中为不同的日志级别创建 Root 元素。由于这个 Invalid Xml Format 问题,遇到了。我想我在 Nlog.Config 或某处遗漏了一些东西。请帮我解决这个问题。

这是我在没有根元素的情况下获得的不同日志级别的输出:

  <logevent time="2019-08-07 10:44:08.7467" level="DEBUG"> 
     <Message>System.Exception: test debug</Message><Exception>test 
     debug</Exception>
   </logevent>
   <logevent time="2019-08-07 10:44:08.8426" level="WARN"> 
      <Message>Serious 
       error</Message><Exception>Object reference not set to an instance 
       of an object.</Exception>
    </logevent>
    <logevent time="2019-08-07 10:45:19.6269" level="WARN"> 
       <Message>Serious error</Message><Exception>Object reference not 
       set to an instance of an object.</Exception>
     </logevent>


  <target name="xmlFile" xsi:type="File" 
      fileName="${basedir}\log\Xmartlog.${shortdate}.xml" 
       archiveFileName="${basedir}\log\log.${shortdate}.xml"
        maxArchiveFiles="4"
        archiveAboveSize="10240"
        archiveEvery="Day"
        encoding="utf-8"  >
    <layout xsi:type="XmlLayout" includeAllProperties="false">
      <attribute  name="time" layout="${longdate}" />
      <attribute name="level" layout="${level:upperCase=true}"/>
      <element name="Message" 
       value="${message:exceptionSeparator=String}"/>
       <element name="Exception" value="${exception:format=message}" />
     </layout>
  </target> 

 There should be output like this:
  <Log>
    ----logs should be here----
   </Log>

【问题讨论】:

标签: c# xml asp.net-mvc-5 nlog


【解决方案1】:

这可能没有明确的记录,但这是正确的。

写入文件时,将附加该文件。不断删除 end-root-element(或者如果追加则插入内容),对于性能和多线程来说会很困难。

我建议在处理文件之前添加根元素作为第一步。

【讨论】:

  • 如何在处理文件之前添加根元素作为第一步。这可以在 nlog.config 或代码级别完成吗?
  • 您需要一些代码。 (.Net、Powershell 等)。不幸的是,它没有内置在 NLog 中。
  • 通过在目标标签中添加页眉和页脚属性解决了问题
  • @NepoKale 记得添加archiveOldFileOnStartup="true",以防您重新启动应用程序。
  • 我写了一个powershell脚本来添加根元素的结束标签github.com/solo-developer/NLog.TagEnder
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 2012-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多