2013-05-01 1 views
0

У меня есть настройка log4net для входа в таблицу базы данных. Настройка выглядит нормально (я могу получить журналы в базе данных.)Почему log4net ждет, когда ограничитель буфера будет запускать макет?

Однако, если я установил журналы в буфер <bufferSize value="30" />, тогда журналы (правильно) ждут до 30 журналов, прежде чем они будут сохранены в базе данных.

Однако макет, похоже, не работает до тех пор, пока буфер не будет заполнен.

Если бы я записывал строки, это было бы неважно, но я передаю объект своему регистратору, а затем у меня есть пользовательский FormatXml, чтобы сериализовать объект для регистрации. У меня также есть пользовательский объект, на котором есть boolean, чтобы указать мне создать открытый или закрытый тег xml.

Все это перепутано, потому что вызывается сообщение журнала, затем обновляются ссылки, затем нажимается предел буфера, а затем вызывается макет (с использованием обновленных ссылок).

В любом случае, чтобы получить log4net для немедленного вызова макета, а затем буфера вызовов базы данных?

В качестве альтернативы, я могу удостовериться, что мои вызовы журнала всегда «долговечны» (т. Е. Сериализуются до того, как я сделаю вызов журнала). Но я хотел проверить, не могу ли я работать с большинством l44net, как я хотел бы сначала.)

ответ

0

DB Appender не поддерживает это, и для этого потребуется внести некоторые изменения, чтобы вы захотели настроить его. Однако вы можете написать свой собственный appender. Я предлагаю вам загрузить исходный код log4net в качестве отправной точки. Таким образом, вы можете даже иметь другую стратегию буферизации (не основанную на количестве событий журнала), если это вам поможет.

Смежные вопросы