C#日期时间通配符



我正在尝试编写一个程序,该程序将获取一个文本文件(一个日志文件),并获取其中的最后10行,以与特定的日志条目匹配,如果不匹配,则抛出错误。问题是,这些日志条目带有日期时间戳,具体取决于特定任务的运行时间。

我试图匹配的条目的一个例子是

Started MM/DD/YY HH:MM:SS
Download1 - success 
Download2 - success
Download3 - success
Download4 - success
Download5 - success
Download6 - success
Download7 - success
Download8 - success
Ended MM/DD/YY HH:MM:SS

由于这应该是我们运行此程序时日志文件中的最新条目,因此我使用以下代码将示例成功日志与指定日志文件(为了简单起见,经过轻微编辑)中的内容进行匹配:

if (logfile.EndsWith("Started MM/DD/YY HH:MM:SS
                      Download1 - success 
                      Download2 - success
                      Download3 - success
                      Download4 - success
                      Download5 - success
                      Download6 - success
                      Download7 - success
                      Download8 - success
                      Ended MM/DD/YY HH:MM:SS")
    {
           Console.WriteLine("Program Was Successful");
    }
else
    { 
           Console.WriteLine("Error");
    }

我遇到的问题是,日期时间戳永远不会与我的成功日志样本匹配,因为这项任务在全国各地的多台计算机上运行,具有不同的时区等。

我想知道我是否以及如何编辑样本成功日志,因为当我们匹配时,匹配的代码将忽略日期/时间戳。有没有办法写日期/时间通配符?任何帮助我们都将不胜感激。谢谢

也许与相比就足够了

1-第一行必须以"已启动"开头

2-最后一行必须以"Ended"开头

3-第一行和最后一行之间的所有行必须以"成功"结束

    {
        var text = @"Started MM/DD/YY HH:MM:SS
Download1 - success
Download2 - success
Download3 - success
Download4 - success
Download5 - success
Download6 - success
Download7 - success
Download8 - success
Ended MM/DD/YY HH:MM:SS";
        var result = IsValid(text, 8);  // you can set the number of "Download.." strings
    }

    private static bool IsValid(string text, int countOfDownloads)
    {
        string[] lines = text.Split(new[] {Environment.NewLine}, StringSplitOptions.None);
        return IsValid(lines,  countOfDownloads);
    }
    private static bool IsValid(string[] lines, int countOfDownloads)
    {
        if (lines.Length != countOfDownloads + 2)
            return false;
        if (!lines[0].StartsWith("Started"))
            return false;
        if (!lines[lines.Length - 1].StartsWith("Ended"))
            return false;
        for (var i = 1; i <= countOfDownloads; i++)
        {
            if (!lines[i].Trim().EndsWith("success"))
                return false;
        }
        return true;
    }

最新更新