2011-02-22 18 views
7

Tengo implementar un apéndice log4net personalizado extendiendo la clase AppenderSkeleton. Era tan simple como cualquiera podría pedir y funciona perfectamente.Obtener valores de la configuración de Log4Net

Mi problema es que tuve que codificar algunos valores y me gustaría eliminarlos de mi código a la configuración del appender. Como log4net sabe cómo está configurado, creo que debería haber una manera de preguntarle a log4net por su configuración.

Mi appender podría ser algo como esto:

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

Cómo obtener el valor de MyProperty1-3 por lo que puede usarlo dentro de mi Appender de?

Gracias de antemano Roalnd

Respuesta

9

Depende un poco del tipo, pero para los tipos simples que usted puede hacer lo siguiente:

definir una propiedad como esta:

// 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; } 
} 

Esto le puede configurar de la siguiente manera:

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

Esto ciertamente funciona s para cadena, bool, int y TimeSpan.

Nota: Si su configuración requiere un poco de lógica para ser activada (por ejemplo, crear un temporizador), entonces puede implementar esto en el método ActivateOptions.

Cuestiones relacionadas