Замок Виндзорский лесозаготовительный комплекс - PullRequest
5 голосов
/ 15 ноября 2010

Я пытаюсь удалить некоторые зависимости журналирования и наткнулся на средство журналирования Castle Windsor.Тем не менее, я скептически отношусь к тому, стоит ли мне его использовать.

public class MyClass
{
    public Castle.Core.Logging.ILogger Logger { get; set; }

    ...
}

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

Если я использую пользовательскую оболочку, которая использует статический класс для создания журнала, я могу сохранить его в секрете.Например:

public class MyClass
{
    private static MyCustomWrapper.ILogger Logger = LogManager.GetLogger(typeof(MyClass));

    ...
}

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

1 Ответ

5 голосов
/ 15 ноября 2010

Для ведения журнала в Виндзоре требуется, чтобы вы выставили свой регистратор как свойство.

Не обязательно.Вы также можете поместить свой логгер как конструктор (то есть обязательный) зависимость.Регистратор обычно объявляется как свойство (т. Е. Необязательная зависимость), потому что может не быть регистратора.То есть компонент должен работать без регистратора.

Если я использую пользовательскую оболочку, которая использует статический класс для создания журнала

Это сервислокатор, этот код связывает MyClass с LogManager, что, на мой взгляд, хуже, чем то, от чего вы пытались уйти.

...