Получение значений из конфигурации Log4Net - PullRequest
7 голосов
/ 22 февраля 2011

Я реализовал собственный app4 log -net, расширив класс AppenderSkeleton. Это было так просто, как любой мог просить, и отлично работает.

Моя проблема в том, что мне пришлось жестко закодировать несколько значений, и я хотел бы удалить их из своего кода в конфигурацию приложения. Поскольку log4net знает, как он настроен, я думаю, что должен быть способ попросить log4net о его конфигурации.

Мой appender может выглядеть примерно так:

<appender name="MyLogAppender" type="xxx.yyy.zzz.MyLogAppender">
      <MyProperty1>property</MyProperty1>
      <MyProperty2>property</MyProperty2>
      <MyProperty3>property</MyProperty3>
</appender>

Как получить значение MyProperty1-3, чтобы я мог использовать его внутри моего Appender?

Заранее спасибо Roalnd

1 Ответ

9 голосов
/ 22 февраля 2011

Это немного зависит от типа, но для простых типов вы можете сделать следующее:

Определить свойство следующим образом:

// the value you assign to the field will be the default value for the property
private TimeSpan flushInterval = new TimeSpan(0, 5, 0);

public TimeSpan FlushInterval
{
     get { return this.flushInterval; }
     set { this.flushInterval = value; }
}

Это можно настроить следующим образом:

<appender name="MyLogAppender" type="xxx.yyy.zzz.MyLogAppender">
    <flushInterval value="02:45:10" />
</appender>

Это, безусловно, работает для string, bool, int и TimeSpan.

Примечание. Если для ваших настроек требуется активация некоторой логики (например, создание таймера), вы можете реализовать это в ActivateOptions метод.

...