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' |
---|
6 | Set 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 |
---|
14 | Set 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: |
---|
31 | Text logPath = TolAppDataPath<<"syslog/"; |
---|
32 | Text filename = logPath<<"start_1.log"; |
---|
33 | Text 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: |
---|
39 | Set Log.ObtainLastMessage(log, "<E>\nERROR: [", "]", "LastError:"); |
---|
40 | Set Log.ObtainLastMessage(log, "<W>\nWarning: [", "]", "LastWarning:"); |
---|
41 | |
---|
42 | // Estos son los mensajes BSR que se rastrean: |
---|
43 | Set 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: |
---|
50 | Set GetLastBSRMessage(log); |
---|
51 | |
---|
52 | ////////////////////////////////////////////////////////////////////////////// |
---|
53 | |
---|
54 | |
---|
55 | |
---|
56 | |
---|
57 | |
---|
58 | |
---|