ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/crab_logger.py
Revision: 1.1
Committed: Thu Mar 10 16:20:30 2005 UTC (20 years, 1 month ago) by nsmirnov
Content type: text/x-python
Branch: MAIN
Log Message:
initial set of files

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