gpt4 book ai didi

c# - .NET Core 平台中Log4Net Layout.XmlLayout 不创建日志

转载 作者:太空宇宙 更新时间:2023-11-03 22:57:38 24 4
gpt4 key购买 nike

我已经为我的应用程序实现了记录器,我想在 .NET Core 控制台应用程序上以 XML 格式 (XmlLayout) 记录事件。Log4Net 配置包括 FileAppender 和 XmlFileAppender,如下所示。

<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="C:\Log4NetLogs\UaGatewayText.log.txt"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%date{dd.MM.yyyy}] [%date{ABSOLUTE}] [%thread]
%level %property{TEST - Ua.Gateway} %message%newline" />

</layout>
</appender>
<appender name="ConsolAppender"
type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%dae{DATE}] [%date{ABSOLUTE}] [%thread]
[%level] %message%newline" />
</layout>
</appender>


<appender name="XmlFileAppender"
type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString"
value="C:\Log4NetLogs\UaGatewayXml.log.xml" />
<appendToFile value= "true" />
<rollingStyle value="size"/>
<maximumFileSize value ="50MB"/>
<maxSizeRollBackups value ="10"/>
<layout type="log4net.Layout.XmlLayout" />
</appender>


<root>
<level value="ALL" />
<appender-ref ref="FileAppender" />
<appender-ref ref="XmlFileAppender" />

</root>

</log4net>

在.NET Core Console App中,XmlAppender在目录下创建UaGatewayXml.log.xml文件,不写入任何日志。但是,它与 FileAppender 配合使用效果很好。

以上配置对于 XmlFileAppender 和 FileAppender 的 .NET Framework (4.5.*) 都按预期工作。

我是否必须在配置文件中进行任何更改?谢谢

最佳答案

问题出在 log4net.Layout.XmlLayoutSchemaLog4j 它使用方法 writer.WriteStartElement("log4j:event"); 导致验证错误。

您可以创建自己的布局(从此处获取代码 here )

只是改变

writer.WriteStartElement("log4j:event")

进入

writer.WriteStartElement("log4j", "event", "log4j");

此方法采用前缀、元素名称和命名空间。我在 YALV 中打开了输出 XML 文件,一切正常。不要忘记更正所有 WriteStartElement 方法。

我写了这个解决方案here .

关于c# - .NET Core 平台中Log4Net Layout.XmlLayout 不创建日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44650389/

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