close Warning: Can't synchronize with repository "(default)" (/var/svn/mms does not appear to be a Subversion repository.). Look in the Trac log for more information.

Ticket #292: loganalyzer01.tol

File loganalyzer01.tol, 2.2 KB (added by Pedro Gea, 15 years ago)
Line 
1
2// Estrae el último mensaje de un 'log' que se encuentre encerrado
3// entre los textos 'ini' y 'fin'.
4// Devuelve la línea en la que lo encontró y el mensaje encerrado
5// precedido del texto 'nam'
6Set Log.ObtainLastMessage(Text log, Text ini, Text fin, Text nam) {
7  Real p1 = TextFind(log, ini, TextLength(log), 1, -1);
8  Real p2 = TextFind(log, fin, p1+TextLength(ini), 1, 1);
9  [[ p1, Text nam << Text Sub(log, p1+TextLength(ini), p2-1) ]]
10};
11
12// Utiliza la función anterior para encontrar las "última" traza
13// de BSR que nos daría una idea de por donde va el proceso
14Set GetLastBSRMessage(Text log) {
15  Set bsrMessages = [[
16    Set Log.ObtainLastMessage(log, "[Bsr::Import] ", "\n", "BsrImport:");
17    Set Log.ObtainLastMessage(log, "[BSR.Parse] ", "\n", "BsrParse:");
18    Set Log.ObtainLastMessage(log, "\n Simulating iterations  ", "-", "BsrSimulation:");
19    Set Log.ObtainLastMessage(log, "[CMsg::Phase] <", " ", "BsrReport:")
20  ]];
21  Set sel = Select(bsrMessages, Real (Set msg) { msg[1]!=0 });
22  If(Card(sel)==0, [[ 0, "" ]], {
23    Sort(sel,  Real (Set msg1, Set msg2) { Compare(msg2[1], msg1[1]) })[1]
24  })
25};
26
27//////////////////////////////////////////////////////////////////////////////
28// Ejemplo:
29
30// Escojo en log que deseo analizar:
31Text logPath = TolAppDataPath<<"syslog/";
32Text filename = logPath<<"start_1.log";
33Text log = ReadFile(filename);
34
35// Puedo reducir el log para ver lo que diría cuando aún no ha acabado
36//Text log := Sub(log, 1, 281286);
37
38// Puedo encontrar el número de errores o advertencias:
39Set Log.ObtainLastMessage(log, "<E>\nERROR: [", "]", "LastError:");
40Set Log.ObtainLastMessage(log, "<W>\nWarning: [", "]", "LastWarning:");
41
42// Estos son los mensajes BSR que se rastrean:
43Set BSRMessages = [[
44  Set Log.ObtainLastMessage(log, "[Bsr::Import] ", "\n", "BsrImport:");
45  Set Log.ObtainLastMessage(log, "[BSR.Parse] ", "\n", "BsrParse:");
46  Set Log.ObtainLastMessage(log, "\n Simulating iterations  ", "-", "BsrSimulation:");
47  Set Log.ObtainLastMessage(log, "[CMsg::Phase] ", "\n", "BsrReport:")
48]];
49// Éste es el último:
50Set GetLastBSRMessage(log);
51
52//////////////////////////////////////////////////////////////////////////////
53
54
55
56
57
58