ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/crab_logger.py
Revision: 1.7
Committed: Tue May 15 09:09:14 2007 UTC (17 years, 11 months ago) by slacapra
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_2_6_0_pre2, CRAB_2_6_0_pre1, CRAB_2_5_1, CRAB_2_5_1_pre4, CRAB_2_5_1_pre3, CRAB_2_5_1_pre2, CRAB_2_5_1_pre1, CRAB_2_5_0, CRAB_2_5_0_pre7, CRAB_2_5_0_pre6, CRAB_2_5_0_pre5, CRAB_2_5_0_pre4, CRAB_2_5_0_pre3, CRAB_2_5_0_pre2, CRAB_2_5_0_pre1, CRAB_2_4_4, CRAB_2_4_4_pre6, CRAB_2_4_4_pre5, CRAB_2_4_4_pre4, CRAB_2_4_4_pre3, CRAB_2_4_4_pre2, CRAB_2_4_4_pre1, CRAB_2_4_3, CRAB_2_4_3_pre8, CRAB_2_4_3_pre7, CRAB_2_4_3_pre6, CRAB_2_4_3_pre5, CRAB_2_4_3_pre3, CRAB_2_4_3_pre2, CRAB_2_4_3_pre1, CRAB_2_4_2, CRAB_2_4_2_pre3, CRAB_2_4_2_pre2, CRAB_2_4_2_pre1, CRAB_2_4_1, CRAB_2_4_1_pre4, CRAB_2_4_1_pre3, CRAB_2_4_1_pre2, CRAB_2_4_1_pre1, CRAB_2_4_0_Tutorial, CRAB_2_4_0_Tutorial_pre1, CRAB_2_4_0, CRAB_2_4_0_pre9, CRAB_2_4_0_pre8, CRAB_2_4_0_pre7, CRAB_2_4_0_pre6, CRAB_2_4_0_pre5, CRAB_2_4_0_pre4, CRAB_2_4_0_pre3, CRAB_2_4_0_pre2, CRAB_2_4_0_pre1, CRAB_DLS_PHED1, CRAB_DLS_PHED, CRAB_2_3_2_Fnal, CRAB_2_3_2, CRAB_2_3_2_pre7, CRAB_2_3_2_pre5, CRAB_2_3_2_pre4, CRAB_2_3_2_pre3, CRAB_2_3_2_pre2, CRAB_2_3_2_pre1, CRAB_2_4_0_test, CRAB_2_3_1, CRAB_2_3_1_pre6, CRAB_2_3_1_pre5, CRAB_2_3_1_pre4, CRAB_2_3_1_pre3, CRAB_2_3_1_pre2, CRAB_2_3_1_pre1, CRAB_2_3_0, CRAB_2_3_0_pre6, CRAB_2_3_0_pre1, CRAB_2_2_2_pre5, CRAB_2_2_2_pre4, CRAB_2_2_2_pre3, CRAB_2_2_2_pre2, CRAB_2_2_2_pre1, CRAB_2_2_1, CRAB_2_2_1_pre6, CRAB_2_2_1_pre5, CRAB_2_2_1_pre4, PRODCOMMON_0_10_7_testCS2, CRAB_2_2_1_pre3, CRAB_2_2_1_pre2, CRAB_2_2_1_pre1, CRAB_2_2_0, CRAB_2_2_0_pre21, CRAB_2_2_0_pre19, CRAB_2_2_0_pre18, CRAB_2_2_0_pre17, CRAB_2_2_0_pre16, CRAB_2_2_0_pre15, CRAB_2_2_0_pre13, CRAB_2_2_0_pre12, CRAB_2_2_0_pre11, CRAB_2_2_0_pre10, bp_osg_bdii, CRAB_2_2_0_pre9, CRAB_2_2_0_pre8, CRAB_2_2_0_pre7, CRAB_2_1_2, CRAB_2_2_0_pre5, CRAB_2_1_2_pre2, CRAB_2_1_2_pre1, CRAB_2_2_0_pre4, CRAB_2_2_0_pre2, CRAB_2_1_1, CRAB_2_1_1_pre3, CRAB_2_2_0_pre1, CRAB_2_1_1_pre1, CRAB_2_1_0, CRAB_2_1_0_pre6, CRAB_2_1_0_pre5, CRAB_2_1_0_pre4, CRAB_2_1_0_pre3, CRAB_2_1_0_pre2, CRAB_2_1_0_pre1, CRAB_2_0_4, CRAB_2_0_4_pre2, CRAB_2_0_4_pre1, CRAB_2_0_3, CRAB_2_0_3_pre1, CRAB_2_0_2, CRAB_2_0_2_pre6, CRAB_2_0_2_pre5, CRAB_2_0_2_pre4, CRAB_2_0_2_pre3, CRAB_1_5_4_SLC3, CRAB_1_5_4_SLC3_pre4, CRAB_2_0_2_pre2, CRAB_2_0_2_pre1, CRAB_1_5_4_SLC3_pre3, CRAB_2_0_1, CRAB_1_5_4_SLC3_pre2, CRAB_2_0_1_pre1, CRAB_1_5_4_SLC3_pre1, CRAB_2_0_0, CRAB_2_0_0_pre10, CRAB_2_0_0_pre9, CRAB_1_5_4, CRAB_1_5_4_pre2, CRAB_1_5_4_pre1, CRAB_2_0_0_pre7, CRAB_2_0_0_pre6, CRAB_1_5_3, CRAB_1_5_3_pre5, CRAB_1_5_3_pre4, CRAB_2_0_0_pre5, CRAB_1_5_3_pre3, configure, CRAB_2_0_0_pre4, CRAB_1_5_3_pre2, CRAB_1_5_3_pre1, CRAB_2_0_0_pre3, CRAB_1_5_2, CRAB_2_0_0_pre2, CRAB_2_0_0_pre1, CRAB_1_5_1, CRAB_1_5_1_pre4, CRAB_1_5_1_pre3, CRAB_1_5_1_pre2
Branch point for: AnaDataSet, CRAB_2_3_0_br, osg_bdii, CRAB_2_1_2_br, CRAB_2_1_1_pre2, CRAB_1_5_4_SLC3_pre4_br, CRAB_1_5_4_SLC3_start
Changes since 1.6: +0 -1 lines
Log Message:
fix double free problem in -clean: need boss >= BOSS_4_3_3-sl3-sl4-pre2. Cleaner is now an Actor

File Contents

# Content
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 return
43
44 def close(self):
45 self.log_file.close()
46 return
47
48 def get(self):
49 """
50 Returns list of lines in the log-file.
51 """
52 logf = open(self.log_fname, 'r')
53 lines = logf.readlines()
54 logf.close()
55 return lines
56
57 def quiet(self, flag):
58 self.flag_quiet = flag
59 return
60
61 def flush(self):
62 self.log_file.flush()
63 return
64
65 def write(self, msg):
66 """
67 Stores the given message into log-file.
68 """
69 self.lock.acquire()
70 self.log_file.write(msg+'\n')
71 self.lock.release()
72 return
73
74 def message(self, msg):
75 """
76 Prints the given message on a screen and stores it into log-file.
77 """
78 if len(msg) == 0: return
79 self.lock.acquire()
80
81 # print whitespace first
82 for i in range(len(msg)):
83 if msg[i] in string.whitespace:
84 if not self.flag_quiet: print msg[i],
85 self.log_file.write(msg[i])
86 else: break
87 pass
88
89 # print the rest of the message prefixing with the program name
90 msg0 = msg[i:]
91 if not self.flag_quiet: print self.prog_name+'. '+msg0
92 self.log_file.write(msg0+'\n')
93 self.log_file.flush()
94 self.lock.release()
95 return
96
97 def debugLevel(self):
98 return self.debug_level
99
100 def setDebugLevel(self, level):
101 self.debug_level = level
102 return
103
104 def debug(self, level, msg):
105 self.lock.acquire()
106 if level <= self.debug_level: self.message(msg)
107 self.lock.release()
108 return
109