2011-05-23 17 views
6

Varolan bir log4net yapılandırmasına ado ekleyicisini eklemem gerekiyor.Log4net programsal olarak bir adoAppender yapılandırıyor

Kod aracılığıyla eklemeliyim. Ancak, düzen özelliğini doğru olarak tanımlayamadığım için ileti gibi genel dize parametrelerini eklemeye takılıyorum: xml yapılandırmasında PatternLayout kullanıyoruz, ancak CodeLayout kodu IRowLayout değil, şu kodla hatam var:

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

birisi aşağıdaki xml örneği için benzer kodu dize parametre ekleyin biliyor mu: sonunda bir IRawLayout içinde PatternLayout dönüşümü nasıl buldum

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

cevap

17

.

Bunu yapmak için, log4net.Layout.Layout2RawLayoutAdapter kullanmak zorunda:

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

Küçük yazım hatası, bu "Layout2RawLayoutAdapter" (değil * Satır *) olmalıdır. – mlangsworth

İlgili konular