Revision: | 1.4 |
Committed: | Wed Dec 7 11:58:48 2005 UTC (19 years, 4 months ago) by slacapra |
Content type: | text/x-python |
Branch: | MAIN |
CVS Tags: | CRAB_1_5_0_pre3, CRAB_1_5_0_pre2, CRAB_1_4_2, CRAB_1_5_0_pre1, CRAB_1_4_1, CRAB_1_4_1_pre2, CRAB_1_4_1_pre1, CRAB_1_4_0, CRAB_1_4_0_pre4, CRAB_1_4_0_pre3, CRAB_1_4_0_pre2, CRAB_1_4_0_pre1, CRAB_1_3_0, CRAB_1_3_0_pre6, CRAB_1_3_0_pre5, CRAB_1_3_0_pre4, CRAB_1_3_0_pre3, HEAD_20092006, CRAB_1_2_1, CRAB_1_2_0, CRAB_1_2_0_pre9, CRAB_1_2_0_pre8, CRAB_1_2_0_pre7, post_cmssw_integration_20060527, pre_cmssw_integration_20060527, CRAB_1_1_0, CRAB_1_1_0_pre4, CRAB_1_1_0_pre3, CRAB_1_1_0_pre1, CRAB_1_0_7, CRAB_1_0_7_pre1, CRAB_1_0_6, CRAB_1_0_5, CRAB_1_0_4, CRAB_1_0_3 |
Branch point for: | branch_1_4_1, CRAB_BOSS4_v1, CRAB_BOSS4 |
Changes since 1.3: | +4 -0 lines |
Log Message: | many modification for -clean: including small re-structuring of Status class |
# | User | Rev | Content |
---|---|---|---|
1 | nsmirnov | 1.1 | import string |
2 | from crab_exceptions import * | ||
3 | from WorkSpace import WorkSpace | ||
4 | from threading import RLock | ||
5 | import common | ||
6 | |||
7 | class Logger : | ||
8 | |||
9 | #_instance = None | ||
10 | |||
11 | #def getInstance(): | ||
12 | # if not Logger._instance : | ||
13 | # Logger._instance = Logger() | ||
14 | # return Logger._instance | ||
15 | |||
16 | #getInstance = staticmethod(getInstance) | ||
17 | |||
18 | #def hasInstance(): | ||
19 | # return Logger._instance | ||
20 | |||
21 | #hasInstance = staticmethod(hasInstance) | ||
22 | |||
23 | def __init__(self): | ||
24 | #if Logger._instance: | ||
25 | # raise CrabException, 'Logger already exists.' | ||
26 | |||
27 | self.lock = RLock() | ||
28 | self.debug_level = 0 | ||
29 | self.flag_quiet = 0 | ||
30 | self.prog_name = common.prog_name | ||
31 | log_dir = common.work_space.logDir() | ||
32 | self.log_fname = log_dir+self.prog_name+'.log' | ||
33 | self.log_file = open(self.log_fname, 'a') | ||
34 | self.log_file.write('\n-------------------------------------------\n') | ||
35 | |||
36 | #Logger._instance = self | ||
37 | return | ||
38 | |||
39 | def __del__(self): | ||
40 | if not self.flag_quiet: | ||
41 | print self.prog_name+'. Log-file is '+self.log_fname | ||
42 | self.log_file.close() | ||
43 | return | ||
44 | |||
45 | slacapra | 1.4 | def close(self): |
46 | self.log_file.close() | ||
47 | return | ||
48 | |||
49 | nsmirnov | 1.1 | def get(self): |
50 | """ | ||
51 | Returns list of lines in the log-file. | ||
52 | """ | ||
53 | logf = open(self.log_fname, 'r') | ||
54 | lines = logf.readlines() | ||
55 | logf.close() | ||
56 | return lines | ||
57 | |||
58 | def quiet(self, flag): | ||
59 | self.flag_quiet = flag | ||
60 | return | ||
61 | |||
62 | def flush(self): | ||
63 | self.log_file.flush() | ||
64 | return | ||
65 | |||
66 | def write(self, msg): | ||
67 | """ | ||
68 | Stores the given message into log-file. | ||
69 | """ | ||
70 | self.lock.acquire() | ||
71 | self.log_file.write(msg) | ||
72 | self.lock.release() | ||
73 | return | ||
74 | |||
75 | def message(self, msg): | ||
76 | """ | ||
77 | Prints the given message on a screen and stores it into log-file. | ||
78 | """ | ||
79 | if len(msg) == 0: return | ||
80 | self.lock.acquire() | ||
81 | nsmirnov | 1.2 | |
82 | # print whitespace first | ||
83 | nsmirnov | 1.1 | for i in range(len(msg)): |
84 | if msg[i] in string.whitespace: | ||
85 | if not self.flag_quiet: print msg[i], | ||
86 | self.log_file.write(msg[i]) | ||
87 | else: break | ||
88 | pass | ||
89 | |||
90 | nsmirnov | 1.2 | # print the rest of the message prefixing with the program name |
91 | nsmirnov | 1.1 | msg0 = msg[i:] |
92 | if not self.flag_quiet: print self.prog_name+'. '+msg0 | ||
93 | self.log_file.write(msg0+'\n') | ||
94 | self.log_file.flush() | ||
95 | self.lock.release() | ||
96 | return | ||
97 | |||
98 | nsmirnov | 1.3 | def debugLevel(self): |
99 | return self.debug_level | ||
100 | |||
101 | nsmirnov | 1.1 | def setDebugLevel(self, level): |
102 | self.debug_level = level | ||
103 | return | ||
104 | |||
105 | def debug(self, level, msg): | ||
106 | self.lock.acquire() | ||
107 | if level <= self.debug_level: self.message(msg) | ||
108 | self.lock.release() | ||
109 | return | ||
110 |