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>
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? –
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
@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