gpt4 book ai didi

c# - Log4net XMLLayout 产生太多元素

转载 作者:行者123 更新时间:2023-11-30 15:07:48 26 4
gpt4 key购买 nike

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

问题是日志中的每个事件都有 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 时,你得到了他们想要给你的东西。您不能像使用其他布局那样指定要记录的项目。但是,如果您想更改此功能,还有其他选择。首先,您可以更改为文件附加程序并尝试手动进行布局。充其量只会变得困惑。另一种选择是创建您自己的附加程序,它只将您想要的内容和您想要的模式记录到 XML 文件中。如果您正在进行长期更改,除非您真的不想添加到 log4net,否则这是更可取的。

如果你想走第二条路,这里有一篇文章会告诉你具体怎么做:

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

这是一个 SO 问题,它的答案也解释了如何做到这一点:

Log4net xml output

关于c# - Log4net XMLLayout 产生太多元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6231858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com