2011-02-22 17 views
7

Mam implementację niestandardowego appendera log4net przez rozszerzenie klasy AppenderSkeleton. To było tak proste, jak każdy mógł poprosić i działa idealnie.Uzyskiwanie wartości z konfiguracji Log4Net

Mój problem polegał na tym, że musiałem skasować kilka wartości i chciałbym je usunąć z mojego kodu do konfiguracji aplikacji. Ponieważ log4net wie, jak jest skonfigurowany, myślę, że powinien istnieć sposób na spytanie log4net o jego konfigurację.

Moje appender mógłby wyglądać następująco:

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

Jak uzyskać wartość MyProperty1-3 więc można go używać w moim appender?

góry dzięki Roalnd

Odpowiedz

9

To zależy trochę od rodzaju, ale do prostych typów można wykonać następujące czynności:

Określ właściwość tak:

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

ten można skonfigurować w następujący sposób:

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

To na pewno działa s dla string, bool, int i TimeSpan.

Uwaga: Jeśli twoje ustawienia wymagają aktywacji pewnej logiki (np. Utworzenia licznika czasu), możesz to wdrożyć w metodzie ActivateOptions.