2009-08-07 46 views
5

Có thể tạo bộ lọc, ví dụ một bộ lọc thuộc tính trung lập (và được chuyển đến bộ lọc tiếp theo trong chuỗi) nếu giá trị một hoặc giá trị khác khớp với? Một cái gì đó như:Bộ lọc Log4Net "HOẶC"

<filter type="log4net.Filter.PropertyFilter"> 
    <Key value="myProperty" /> 
    <StringsToMatch Operator="OR"> 
     <Match>value1</Match> 
     <Match>value2</Match> 
    </StringsToMatch> 
</filter> 

Tôi thực sự không muốn viết bộ lọc của riêng mình và muốn thực hiện điều này bằng bộ lọc Log4Net bình thường. Điều này có thể không?

Trả lời

4

Bạn chắc chắn có thể tự mình phát triển bộ lọc như vậy bằng cách phân lớp FilterSkeleton. Nhưng thay vì làm một bộ lọc chuyên dụng như thế này, tôi khuyên bạn nên thực hiện một bộ lọc chung chung hơn có thể được cấu hình để chứa bộ sưu tập các bộ lọc và áp dụng Toán tử trên các bộ lọc đó. Cấu hình có thể trông giống như sau:

<filter type="CompositeFilter"> 
    <operator value="Or" /> 
    <filters> 
    <filter type="log4net.Filter.PropertyFilter"> 
     <stringToMatch value="value1" /> 
    </filter> 
    <filter type="log4net.Filter.PropertyFilter"> 
     <stringToMatch value="value2" /> 
    </filter> 
    </filters> 
</filter> 

Nếu bạn tạo bộ lọc như vậy, tôi khuyến khích bạn gửi nó cho dự án log4net. Nó chắc chắn sẽ hữu ích cho công chúng :)

+2

Vâng, tôi đã hy vọng một người khác đã làm điều này rồi. Tôi ngạc nhiên như một động cơ khai thác gỗ trưởng thành như vậy sẽ không có khả năng này đã có trong thân cây. –

+1

và năm năm sau nó vẫn không! Đoán không ai cảm thấy thích cam kết ;-) – BatteryBackupUnit

+0

@BatteryBackupUnit - câu hỏi là: có ai từng triển khai không? : D –

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