Log4net XMLLayout生成的元素太多



我刚刚接手了一个C#项目,该项目使用log4net xmllayout进行日志记录。

问题是,日志中的每个事件都有4个数据值:机器名、主机名、用户名和应用程序,它们总是相同的,但对于每个事件都会重复,导致日志文件过大。

如何防止这些记录?

配置文件:

<?xml version="1.0"?>
<configuration>
  <!--log4net setting-->
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="%env{LocalAppData}\myApp\myApp.log.xml" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="1" />
      <maximumFileSize value="3MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.XmlLayoutSchemaLog4j">
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="RollingFileAppender" />
    </root>
  </log4net>

  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_myAppWCF" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
          maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
          messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
          useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
              realm="">
              <extendedProtectionPolicy policyEnforcement="Never" />
            </transport>
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:12372/conserv" binding="basicHttpBinding"
        bindingConfiguration="BasicHttpBinding_myAppWCF" contract="myAppNOWServiceClient.myAppWCF"
        name="BasicHttpBinding_myAppWCF" />
    </client>
  </system.serviceModel>
  <startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

当您使用XMLLayout时,您可以得到他们想要给您的内容。您不能像使用其他布局那样指定要记录的项目。但是,如果您想更改此功能,也有其他选择。首先,您可以更改为文件附加程序,并尝试手动进行布局。这充其量也只是一团糟。另一种选择是创建自己的appender,该appender只记录到您想要的XML文件和您想要的模式中。如果你正在做一个长期的改变,除非你真的不想添加到log4net,否则这是更可取的。

如果你想走第二条路,这里有一篇文章将向你展示如何做到这一点:

http://blogs.lessthandot.com/index.php/DesktopDev/MSTech/making-an-xmllayout-for-log4net

这里有一个SO问题,它有一个解释如何做到这一点的答案:

Log4net xml输出

相关内容

  • 没有找到相关文章

最新更新