Написать метод на c#
Требуется быстрая работа с файлами лога, вес которых может быть более 5Гб.
Сейчас есть готовый метод, который при выборе файла, ищет строку с нужным совпадением и записывает результат в текстовое поле. Его нужно дописать. Сам метод ниже в тексте.
Что нужно:
- Нужно создать цикл поиска по логу:
--найти первое вхождение, в строке помимо даты будет только текст по маске "\sDeadlock\sId\s\d {3}\sdetected";
--после этого вхождения подгрузить все следующие строки до строки, где заканчивается блок;
--блок заканчивается либо строкой "End of deadlock information" либо "end of stack trace";
- вывести в текстовое поле( можно с разделителями), и далее ищем такой же блок и тд.
private void CheckLog(string y)
{
StreamReader str = new StreamReader(y);
while (Istr. EndofStream)
{
var line = str. ReadLineO;
if (String. IsNullOrEmpty(line)) continue;
if (line. IndexOfft, StringComparison. CurrentCultureIgnoreCase) >= 0)
{
Regex checkip = new Regex(@"\sDeadlock\sId\s\d {3}\sdetected");
MatchCollection matchesAT = checkip. Matches(line);
if (matchesAT.Count > 0) {//вывод в текстовое поле}
}
}
str.Close();
}
p.s реализация желательно базовыми моментами, по индексу строки или еще как то.