2012-09-26 27 views
5

Có khả năng lọc ra các mục nhập nhật ký từ một chuỗi cụ thể không?log4net - đồng ý bỏ qua thư từ một chủ đề cụ thể

tôi sử dụng nunit cho chạy thử nghiệm (C#):

using System; 
using NUnit.Core; 
using log4net; 

namespace Main 
{ 
    public class Program 
    { 
     public static readonly ILogger log = LogManager.GetLogger(typeof(Program)); 

     static void Main(string[] args) 
     { 
      log.Info("start"); 

      TestPackage package = new TestPackage(@"C:\Test\Main.Tests.dll"); 
      RemoteTestRunner remoteTestRunner = new RemoteTestRunner(); 
      remoteTestRunner.Load(package); 
      TestResult result = remoteTestRunner.Run(new NullListener(), TestFilter.Empty, true, LoggingThreshold.All); 

      log.Info("end"); 
     } 
    } 
} 

Đây là khai thác gỗ tôi nhận được:

INFO 17:57:24 [1] Main.Program - start 
ERROR 17:57:25 [TestRunnerThread] Main.TestedClass - Exception! Relevant for production/okay in test 
INFO 17:57:26 [1] Main.Program - end 

log4net gửi cho tôi một email mỗi khi một ERROR được đăng nhập. Nếu tôi chạy thử nghiệm, tôi không muốn nhận được những thư đó. nunit đặt tên chuỗi thành: "TestRunnerThread". Làm thế nào tôi có thể bỏ qua chủ đề này?

Tôi đã đọc này: How to log into separate files per thread with Log4Net? và cố bộ lọc này (và đã không có bản ghi nào cả):

<filter type="log4net.Filter.PropertyFilter"> 
    <key value="threadId" /> 
    <stringToMatch value="TestRunnerThread" /> 
    <acceptOnMatch value="false" /> 
</filter> 
+1

Tại sao bạn không định cấu hình một bộ ứng dụng khác trong môi trường thử nghiệm? –

+0

Phương pháp bạn đang thử đòi hỏi nhiều hơn việc đặt threadName thành TestRunnerThread, nhưng cũng sẽ yêu cầu một cái gì đó để thiết lập thuộc tính log4net ví dụ như 'log4net.ThreadContext.Properties ["threadId"] = "TestRunnerThread"; 'và không chắc Nunit sẽ làm điều đó. – sgmoore

+0

@WiktorZychla: Đây sẽ là tự kiểm tra chương trình. Một số kiểm tra kiểm tra xem cấu hình có đúng không. Cả hai cấu hình chương trình cụ thể và log4net-config là trong cùng một tập tin (app.config). Tôi sẽ cố gắng vô hiệu hóa các appenders trong _self-test-mode_. – dirk

Trả lời

-2

tôi đã không sử dụng log4net nhưng một gợi ý đơn giản sẽ được thay đổi id để một cái gì đó như [email protected] tại nơi bạn chỉ định id email để nhận email đăng nhập ...

Đồng ý nên có điều gì đó để định cấu hình để không gửi email mỗi lần nhưng điều này có thể là giải pháp cho đến khi bạn tìm thấy giải pháp

Trong khi bạn đang sử dụng tính năng ghi nhật ký, tôi cũng khuyên bạn nên xem khối ứng dụng ghi nhật ký thư viện Microsoft Enterprise. Nó là siêu dễ dàng để cấu hình và sử dụng trong ứng dụng của bạn.

Liên kết http://msdn.microsoft.com/en-us/library/ff664569(v=pandp.50).aspx

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