ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/crab_logger.py
Revision: 1.5
Committed: Wed Jan 17 18:17:59 2007 UTC (18 years, 3 months ago) by slacapra
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_1_5_0_pre4
Changes since 1.4: +1 -0 lines
Log Message:
many minor fixes reported by pychecker, mostly unsude import and unused variables

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 slacapra 1.5 if (msg[-1]!='\n'): msg+='\n'
71 nsmirnov 1.1 self.lock.acquire()
72     self.log_file.write(msg)
73     self.lock.release()
74     return
75    
76     def message(self, msg):
77     """
78     Prints the given message on a screen and stores it into log-file.
79     """
80     if len(msg) == 0: return
81     self.lock.acquire()
82 nsmirnov 1.2
83     # print whitespace first
84 nsmirnov 1.1 for i in range(len(msg)):
85     if msg[i] in string.whitespace:
86     if not self.flag_quiet: print msg[i],
87     self.log_file.write(msg[i])
88     else: break
89     pass
90    
91 nsmirnov 1.2 # print the rest of the message prefixing with the program name
92 nsmirnov 1.1 msg0 = msg[i:]
93     if not self.flag_quiet: print self.prog_name+'. '+msg0
94     self.log_file.write(msg0+'\n')
95     self.log_file.flush()
96     self.lock.release()
97     return
98    
99 nsmirnov 1.3 def debugLevel(self):
100     return self.debug_level
101    
102 nsmirnov 1.1 def setDebugLevel(self, level):
103     self.debug_level = level
104     return
105    
106     def debug(self, level, msg):
107     self.lock.acquire()
108     if level <= self.debug_level: self.message(msg)
109     self.lock.release()
110     return
111