AppenderSkeleton から継承してカスタム アペンダーを実装しました。ロガー インスタンスが正しく作成され、ログを記録するときに「Append」メソッドが呼び出されますが、メッセージの形式が正しくありません。StreamWriter インスタンスを渡していくつかの方法を試しましたが、すべての呼び出しでストリームへの書き込みに失敗しました。私が試したもう 1 つのことは、RenderedMessage プロパティを使用することですが、返される値は、レイアウトの書式設定のない正確なメッセージです。
protected override void Append(log4net.Core.LoggingEvent loggingEvent)
{
StreamWriter _writer = new StreamWriter(new MemoryStream());
RenderLoggingEvent(_writer, loggingEvent);
//After writing the logging event the base stream position remains 0
byte[] messageBuffer = new byte[_writer.BaseStream.Position];
_writer.BaseStream.Read(messageBuffer, 0, messageBuffer.Length);
//Also trying to read from a stream reader created from the base stream fails
var reader = new StreamReader(_writer.BaseStream);
var test = reader.ReadToEnd();
//variable test is not formatted correctly according to the conversion pattern
test = loggingEvent.RenderedMessage;
}
<appender name="TestAppender" type="log4netTestApp">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%date]-[%thread]-[%level]-[%logger] - %message%newline" />
</layout>
</appender>
何が間違っているかについてのアイデアはありますか?
メモリ ストリームからファイル ストリームへの変更は正しいレイアウトであるため、メモリ ストリームを使用することで何かを行う必要があります。