2011-05-23 15 views
6

Necesito agregar un appender de ado a una configuración de log4net existente.Log4net configurando programáticamente un adoAppender

Necesito agregarlo a través del código. Sin embargo, estoy atascado en la adición de parámetros de cadena comunes como mensaje, ya que no puedo definir correctamente la propiedad de diseño: en la configuración xml, utilizamos PatternLayout, pero a través del código PatternLayout no es un IRowLayout, así que tengo un error con el siguiente código:

public static void AddStringParameterToAppender(this log4net.Appender.AdoNetAppender appender, string paramName, int size, string conversionPattern) 
    { 
     log4net.Appender.AdoNetAppenderParameter param = new log4net.Appender.AdoNetAppenderParameter(); 
     param.ParameterName = paramName; 
     param.DbType = System.Data.DbType.String; 
     param.Size = size; 
     param.Layout = new log4net.Layout.PatternLayout(conversionPattern); 
     appender.AddParameter(param); 
    } 

¿alguien sabe cómo añadir un parámetro de cadena de código que es similar al siguiente ejemplo xml:

<parameter> 
    <parameterName value="@message" /> 
    <dbType value="String" /> 
    <size value="4000" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%message" /> 
    </layout> 
</parameter> 

Respuesta

17

fin he encontrado la manera de transformar el PatternLayout en un IRawLayout.

Para hacer esto, usted tiene que utilizar log4net.Layout.Layout2RawLayoutAdapter:

public static void AddStringParameterToAppender(this log4net.Appender.AdoNetAppender appender, string paramName, int size, string conversionPattern) 
    { 
     log4net.Appender.AdoNetAppenderParameter param = new log4net.Appender.AdoNetAppenderParameter(); 
     param.ParameterName = paramName; 
     param.DbType = System.Data.DbType.String; 
     param.Size = size; 
     param.Layout = new log4net.Layout.Layout2RawLayoutAdapter(new log4net.Layout.PatternLayout(conversionPattern)); 
     appender.AddParameter(param); 
    } 
+0

pequeño error tipográfico, que debería ser "Layout2RawLayoutAdapter" (no * * Fila). – mlangsworth

Cuestiones relacionadas