ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/crab_logger.py
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

File Contents

# 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