source: CCCC/tags/0.1/summary_by_error_code.py @ 129

Subversion URL: http://proj.badc.rl.ac.uk/svn/exarch/CCCC/tags/0.1/summary_by_error_code.py@283
Revision 129, 2.2 KB checked in by astephen, 6 years ago (diff)

institution_id removed from reuired global attributes for SPECS

  • Property svn:executable set to *
Line 
1#!/usr/bin/env python
2
3"""
4summary.py
5==========
6
7Generates a summary of the logs (one-per-file) in a given directory.
8
9Usage:
10======
11
12    summary.py <directory>
13
14"""
15
16# Standard Library imports
17import sys, glob, os
18
19
20def generateSummary(dr):
21    "Generates a summary of logged outputs."
22
23    files = glob.glob( '%s/*.txt' % dr )
24
25    errors_by_ = {}
26
27    """
28    for f in files:
29        fin = open(f)
30
31        for l in fin.readlines():
32
33            if l.find('FAILED') != -1:
34                bits = l.split(':')
35
36                if len(bits) > 3:
37                    code = bits[0]
38                    msg = bits[3]
39
40                    errors.setdefault((code, msg), [])
41                    errors[code, msg].append(
42
43                    if errors[code][1] != msg:
44                        print 'code %s occurs with multiple messages: %s, %s' % (code,errors[code][1],msg)
45                    else:
46                        print bits
47
48         fin.close()
49
50    keys = errors.keys()
51    keys.sort()
52
53    for k in keys:
54        print k, errors[k]
55    """
56
57def generateSummaryByErrorCode(dr):
58    "Prints a summary of all files that detected a particular error."
59   
60    files = glob.glob('%s/*.txt' % dr)
61
62    errors = {}
63
64    for f in files:
65        fname = os.path.split(f)[1].split("__qclog")[0] + ".nc"
66        if fname.find("qcBatchLog") == 0: continue
67
68        fin = open(f)
69        fname
70
71        for l in fin.readlines():
72
73            if l.find('FAILED') != -1:
74                bits = l.split(':')
75
76                if len(bits) > 3:
77                    code = bits[0]
78                    msg = bits[3]
79
80                    errors.setdefault((code, msg), [])
81                    errors[(code, msg)].append(fname)
82
83        fin.close()
84
85    keys = errors.keys()
86    keys.sort()
87
88    for k in keys:
89        files = errors[k]
90        files.sort()
91        print "CODE: %s (%d files)" % (k, len(files))
92   
93        if printFiles:
94          for f in files: print "\t%s" % f
95        elif printTwoFiles:
96          for f in files[:min(2,len(files))]: 
97            print "\t%s" % f
98
99
100
101if __name__ == "__main__":
102
103    printFiles = False
104    printTwoFiles = True
105    dr = sys.argv[1]
106    generateSummaryByErrorCode(dr)
Note: See TracBrowser for help on using the repository browser.