2009-03-15 26 views
6

tenía curiosidad de cómo funciona la siguiente línea para la configuración de log4net en una asamblea:configuración de log4net con [assembly:]

[assembly: log4net.Config.XmlConfigurator(Watch=true)] 

supongo esto se llama en algún momento antes de que el tiempo de ejecución invoca "main()", pero ¿Cuándo ocurre esto y cuáles son las implicaciones? ¿Hay otros marcos/bibliotecas que usen este atributo de ensamblaje para cargar un contexto inicial como este? ¿Hay alguna ventaja/desventaja para hacer algo como esto, en lugar de llamar a un método "Configurar" en main()?

Respuesta

7

Las ventajas de hacer esto son que el código se inicializa antes de su código principal y antes de la inicialización estática.

Esto significa que puede, por ejemplo, usar log4net logging dentro de un constructor estático. Sin una forma de inicializar previamente log4net, en el constructor estático nunca se sabe con certeza si el código se ha inicializado correctamente.

Esta área no parece estar muy bien documentada (o fácil de encontrar de todos modos), pero supongo que la inicialización de los métodos llamados se realiza en el momento de carga del conjunto.

+1

Esta función está documentada en el Manual log4net, http://logging.apache.org/log4net/release/manual/configuration.html, sección "Atributos de configuración". – Designpattern

0

"Supongo que esto se llama en algún momento antes de que el tiempo de ejecución invoque" main() ", pero ¿cuándo ocurre esto y cuáles son las implicaciones?


Según log4net documentation:

Uso de atributos puede ser un método más clara para definir dónde configuración de la aplicación serán cargados desde. Sin embargo, vale teniendo en cuenta que los atributos son puramente pasivos. Son información solamente. Por lo tanto, si usa los atributos de configuración, debe invocar log4net para que pueda leer los atributos.

Así que supongo que todavía tiene que llamar al método XmlConfigurator.Configure() o .

Cuestiones relacionadas