Я пытаюсь проанализировать довольно длинный файл журнала и создать более удобный список проблем.
Я могу читать и анализировать отдельный журнал построчно, но мне нужно только отобразить уникальные записи, поскольку некоторые ошибки происходят чаще, чем другие, и всегда записываются с одинаковым текстом.
Я собирался попытаться создать объект Dictionary, содержащий каждую уникальную запись, и, пока я работаю с файлом журнала, поискать в объекте Dictionary, чтобы увидеть, есть ли там те же значения.
Вот грубый пример кода, который у меня есть (работа в процессе, я надеюсь, что у меня есть весь синтаксис правильно), который не работает. По какой-то причине этот сценарий никогда не видит никаких отдельных записей (если оператор никогда не проходит):
string[] rowdta = new string[4];
Dictionary<string[], int> dict = new Dictionary<string[], int>();
int ctr = -1;
if (linectr == 1)
{
ctr++;
dict.Add(rowdta, ctr);
}
else
{
foreach (KeyValuePair<string[], int> pair in dict)
{
if ((pair.Key[1] != rowdta[1]) || (pair.Key[2] != rowdta[2])| (pair.Key[3] != rowdta[3]))
{
ctr++;
dict.Add(rowdta, ctr);
}
}
}
Некоторые примеры данных:
Первая строка
rowdta[0]="ErrorType";
rowdta[1]="Undefined offset: 0";
rowdta[2]="/url/routesDisplay2.svc.php";
rowdta[3]="Line Number 5";
2-я строка
rowdta[0]="ErrorType";
rowdta[1]="Undefined offset: 0";
rowdta[2]="/url/routesDisplay2.svc.php";
rowdta[3]="Line Number 5";
3-я строка
rowdta[0]="ErrorType";
rowdta[1]="Undefined variable: fvmsg";
rowdta[2]="/url/processes.svc.php";
rowdta[3]="Line Number 787";
Итак, в этом словаре будет 2 предмета: первая и третья.
Я также пробовал это со следующим, что nalso не находит никаких изменений в тексте файла журнала.
if (!dict.ContainsKey(rowdta)) {}
Может кто-нибудь помочь мне понять этот синтаксис правильно? Я просто новичок в C #, но это должно быть относительно просто. Как всегда, я думаю, что этой информации должно быть достаточно, чтобы начать разговор. Если вы хотите / хотите более подробно, пожалуйста, дайте мне знать.