Формат сообщения пользовательского приложения log4net игнорируется

1

Я реализовал пользовательский appender, наследуя от AppenderSkeleton. Экземпляр моего регистратора создается правильно, и при регистрации метода "Добавить" вызывается, но сообщение не отформатировано правильно. Я попробовал несколько разных способов, передав экземпляр StreamWriter, но все обращения к нему не могут быть записаны в поток. Другая вещь, которую я пробовал, - это использование свойства 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>

Какие-нибудь идеи относительно того, что не так?

Переход из потока памяти в поток файлов имеет правильный макет, поэтому он должен быть чем-то с использованием потока памяти.

  • 0
    проконсультировались ли вы со справочным руководством по log4net Я уверен, что в нем приведено множество примеров по настройке приложения.
  • 0
    Ваша проблема в том, что вы пишете в MemoryStream, который затем не доступен
Показать ещё 1 комментарий
Теги:
log4net
log4net-appender

1 ответ

0

Похоже, мне нужно было сбросить _writer. Как только это было сделано, я получил правильную позицию потока и все форматирование присутствовало.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню