2011-02-22 18 views
7

AppenderSkeleton sınıfını genişleterek özel bir log4net ekleyicisini uygularım. Herkesin istediği ve mükemmel çalışabileceği kadar basitti.Log4Net yapılandırmasından değer alma

Sorunum, birkaç değeri kodlamak zorunda kaldım ve bunları kodumdan ekleyicinin yapılandırmasına çıkarmak istiyorum. Log4net'in nasıl yapılandırıldığını bildiğinden, yapılandırması için log4net'i sormanın bir yolu olmalı diye düşünüyorum.

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

Nasıl MyProperty1-3 değeri bu yüzden benim Appender içerisinde kullanabilirsiniz almak için:

Benim appender şuna benzer olabilir? peşin

Teşekkür Roalnd

Bu tip bağlıdır.Örneğin ama basit türleri için aşağıdakileri yapabilirsiniz

cevap

9

:

böyle bir özellik tanımlayın:

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

Bu yapabilecekleriniz aşağıdaki gibi yapılandırın:

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

Bu kesinlikle çalışır string, bool, int ve TimeSpan için s.

Not: Ayarlarınız etkinleştirilecek bir mantık gerektiriyorsa (ör. Bir zamanlayıcı oluşturun), bunu ActivateOptions yönteminde uygulayabilirsiniz.