ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/crab_logger.py
Revision: 1.3
Committed: Wed Jun 22 15:14:57 2005 UTC (19 years, 10 months ago) by nsmirnov
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_1_0_2, CRAB_0_2_2, CRAB_1_0_1, CRAB_1_0_0_rc1, CRAB_1_0_0_beta4, CRAB_1_0_0_pre1_boss_2, CRAB_1_0_0_pre1_boss, CRAB_1_0_0_pre3, CRAB_1_0_0_pre2, CRAB_1_0_0_pre1
Changes since 1.2: +3 -0 lines
Log Message:
The '-continue' option implemented

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 nsmirnov 1.2
78     # print whitespace first
79 nsmirnov 1.1 for i in range(len(msg)):
80     if msg[i] in string.whitespace:
81     if not self.flag_quiet: print msg[i],
82     self.log_file.write(msg[i])
83     else: break
84     pass
85    
86 nsmirnov 1.2 # print the rest of the message prefixing with the program name
87 nsmirnov 1.1 msg0 = msg[i:]
88     if not self.flag_quiet: print self.prog_name+'. '+msg0
89     self.log_file.write(msg0+'\n')
90     self.log_file.flush()
91     self.lock.release()
92     return
93    
94 nsmirnov 1.3 def debugLevel(self):
95     return self.debug_level
96    
97 nsmirnov 1.1 def setDebugLevel(self, level):
98     self.debug_level = level
99     return
100    
101     def debug(self, level, msg):
102     self.lock.acquire()
103     if level <= self.debug_level: self.message(msg)
104     self.lock.release()
105     return
106