0

特定のエラーがlog4netファイルに記録されていることとその回数を確認しようとしています。1つの値を読み取り、それが正しい場合はアサートする次のコードに取り組んでいますが、trueの場合にアサートするよりも、ログファイルに何回表示されたかを確認したいと思います。

private string logfile;

[SetUp]
public void SetUp()
{
    logfile = Path.Combine(
        Environment.GetEnvironmentVariable("ALLUSERSPROFILE"),
        "test.log");

    if (File.Exists(logfile))
        File.Delete(logfile);

    XmlConfigurator.Configure();
}

[Test] public void GivenLog4NetFileAppender_WhenLogInfoStringWithLog4Net_ThenWritesToDisk()
{
    ILog log = LogManager.GetLogger(typeof (LoggingIntegrationTests));
    log.Info("Error 2");

    LogManager.Shutdown();

    Assert.That(File.ReadAllText(logfile),
                Is.StringContaining("Error 2"));
}

したがって、上記のコードで、エラー2が3回ログに記録された場合、それが3回発生したと断言したいと思います。助けてくれてありがとう

4

1 に答える 1

2

正規表現を使用して、特定の文字列が別の文字列内で発生する回数をカウントできます。

[Test] 
public void GivenLog4NetFileAppender_WhenLogInfoStringWithLog4Net_ThenWritesToDisk()
{
    // arrange
    ILog log = LogManager.GetLogger(typeof (LoggingIntegrationTests));
    string  = "Error 2";

    // act
    log.Info(dataToLog);

    // assert
    LogManager.Shutdown();
    var matches = Regex.Matches(File.ReadAllText(logfile), dataToLog);
    Assert.AreEqual(3, matches.Count);
}
于 2013-01-23T06:38:47.507 に答える