2012-06-12 4 views
1

Зачем использовать подпись ILog в log4net в качестве аргументов? например:Почему log4net использует объект?

void Info(object message); 

Почему бы не просто сделать это явным и ожидать строку? Есть ли какая-то сложная способность отражения за кулисами, например, сгладить сообщение и преобразовать его в табличную структуру? Или это было просто задним числом оригинальных создателей?

Это объект, кажется, указывает на первое, но я не вижу никакой документации об этом.

Также я планирую хранить объект в базе данных, может ли log4net автоматически создать объект для меня, чтобы содержимое сообщения было легко проиндексировано? IE. Если я передаю объект с тремя свойствами, я хочу увидеть 3 свойства в отдельных столбцах. Аналогично отношениям я хочу видеть отношения, построенные на лету.

+1

Таким образом, это может занять все, что поддерживает «ToString», моя догадка. –

ответ

3
  1. Я согласен с Крисом, что они использовали object, так что вы можете передать что-нибудь. Вам нужно будет только беспокоиться о предоставлении полезной реализации ToString(). Нечто похожее сделано в string.Format().

  2. Log4net не поддерживает ваш «сценарий базы данных» напрямую, хотя его можно реализовать без особых затрат. В основном вам нужно написать свой собственный appender и использовать свойство MessageObject для извлечения исходного MessageObject из события регистрации. Тогда вы сможете «легко» записать в базу данных любым способом.

+0

Спасибо, я посмотрю на это. – Alwyn

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