jac*_*k_t 2 c# log4net .net-core
我已经为我的应用程序实现了记录器,我想在 .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>
Run Code Online (Sandbox Code Playgroud)
在 .NET Core Console App 中,XmlAppender 在目录下创建 UaGatewayXml.log.xml 文件,不写入任何日志。但是,它适用于 FileAppender。
上述配置对于 XmlFileAppender 和 FileAppender 的 .NET Framework (4.5.*) 都按预期工作。
我是否必须在配置文件中进行任何更改?谢谢
小智 7
问题在于log4net.Layout.XmlLayoutSchemaLog4j它使用了writer.WriteStartElement("log4j:event");导致验证错误的方法。
您可以创建自己的布局(以代码从这里点击这里)
只是改变
writer.WriteStartElement("log4j:event")
Run Code Online (Sandbox Code Playgroud)
进入
writer.WriteStartElement("log4j", "event", "log4j");
Run Code Online (Sandbox Code Playgroud)
此方法采用前缀、元素名称和命名空间。我已经在YALV 中打开了输出XML文件,一切正常。不要忘记纠正所有方法。WriteStartElement
我在这里写了这个解决方案。
| 归档时间: |
|
| 查看次数: |
2173 次 |
| 最近记录: |