0

我正在尝试验证 log4net 文件中是否记录了某些错误以及记录了多少次。我正在研究以下代码,该代码将读取一个值并断言它是否正确,但我想查看它在日志文件中出现的次数,而不是断言它是否为真。

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 回答