2010-11-15 27 views
5

Estoy tratando de eliminar algunas dependencias de registro y tropecé con la instalación de registro de Castle Windsor. Sin embargo, soy bastante escéptico acerca de si debo usarlo o no.Castle windsor logging facility

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

    ... 
} 

Las instalaciones de registro de Windsor requieren que exponga su registrador como una propiedad. ¿Es realmente una buena práctica? Siento que casi estoy rompiendo la encapsulación porque normalmente cuando reutilizo un componente, no me importa su mecanismo de registro y normalmente no quiero verlo expuesto.

Si utilizo un contenedor personalizado que utiliza una clase estática para crear el registro, puedo mantenerlo en privado. Por ejemplo:

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

    ... 
} 

He buscado en la web por razones de por qué debería utilizar la función de registro, pero yo sólo estoy encontrando artículos sobre cómo Para usarlo, pero no por eso Debería usarlo. Siento que me estoy perdiendo el punto. Tener el componente de registro expuesto me está asustando.

Respuesta

5

Las instalaciones de registro de Windsor requieren que exponga su registrador como una propiedad.

No necesariamente. También puede poner su registrador como una dependencia de constructor (es decir, obligatoria). El registrador generalmente se declara como una propiedad (es decir, dependencia opcional) porque puede que no haya registrador. Es decir, el componente debería poder funcionar sin un registrador.

Si utilizo un envoltorio personalizado que utiliza una clase estática para crear el registro de

Eso es un localizador de servicios, ese código de parejas MyClass a LogManager, que es mi humilde opinión peor de lo que estaba tratando de conseguir lejos de.

+0

¿Pero no estaría ya acoplado a 'Castle.Core.Logging.ILogger'? ¿O es porque 'LogManager' es una clase estática y no puedo reemplazarlo? – Books

+0

@ Ashley: exactamente. Hay mucho menos acoplamiento con una interfaz. –

Cuestiones relacionadas