アプリケーションにロガーを実装しましたが、.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 コンソール アプリでは、XmlAppender は UaGatewayXml.log.xml ファイルをディレクトリに作成し、ログは書き込みません。ただし、FileAppender ではうまく機能します。
上記の構成は、XmlFileAppender と FileAppender の両方の .NET Framework (4.5.*) で期待どおりに機能します。
構成ファイルに変更を加える必要がありますか? ありがとう
問題は、検証エラーを引き起こすlog4net.Layout.XmlLayoutSchemaLog4j
メソッドwriter.WriteStartElement("log4j:event");
を使用していることです。
あなたは(ここからコードを取る独自のレイアウトを作成することができ、ここで)
そしてただ変更する
writer.WriteStartElement("log4j:event")
に
writer.WriteStartElement("log4j", "event", "log4j");
プレフィックス、要素名、および名前空間を受け取るこのメソッド。出力XMLファイルをYALVで開きましたが、すべて正常に動作します。すべてのWriteStartElement
メソッドを修正することを忘れないでください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加