2011-02-22 36 views
7

Tôi đã triển khai một trình bổ sung log4net tùy chỉnh bằng cách mở rộng lớp AppenderSkeleton. Nó đơn giản như mọi người có thể yêu cầu và làm việc một cách hoàn hảo.Lấy các giá trị từ cấu hình Log4Net

Vấn đề của tôi là tôi đã phải hardcode một vài giá trị và tôi muốn loại bỏ chúng khỏi mã của tôi để cấu hình của appender. Kể từ khi log4net biết làm thế nào nó được cấu hình tôi nghĩ rằng nên có một cách để yêu cầu log4net cho nó configuraion.

appender tôi có thể trông giống như thế này:

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

Làm thế nào để có được giá trị của MyProperty1-3 vì vậy tôi có thể sử dụng nó bên appender của tôi?

Cảm ơn trước Roalnd

Trả lời

9

Nó phụ thuộc một chút vào loại nhưng với nhiều loại đơn giản bạn có thể làm như sau:

Xác định một tài sản như thế này:

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

này bạn có thể định cấu hình như sau:

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

Điều này chắc chắn hoạt động s cho chuỗi, bool, int và TimeSpan.

Lưu ý: Nếu cài đặt của bạn yêu cầu kích hoạt một số logic (ví dụ: tạo bộ hẹn giờ) thì bạn có thể thực hiện điều này theo phương pháp ActivateOptions.

Các vấn đề liên quan