source: branches/newfiller/python/logging.py@ 1797

Last change on this file since 1797 was 1797, checked in by Malte Marquarding, 14 years ago

Ticket #193: added new logging class. Also factored out environment based settings from init.py into env.py. This hasn't been enabled/isn't used yet

File size: 1.7 KB
RevLine 
[1797]1__all__ = ["asaplog", "print_log", "print_log_dec"]
2
3from asap.env import is_casapy
4from asap._asap import LogSink, set_global_sink
5
6class _asaplog(object):
7 """Wrapper object to allow for both casapy and asap logging"""
8 def __init__(self):
9 self._enabled = False
10 self._log = ""
11 if is_casapy():
12 from taskinit import casalog
13 self.logger = casalog
14 else:
15 self.logger = LogSink()
16 set_global_sink(self.logger)
17
18 def post(self, level):
19 """Post the messages to the logger. This will clear the buffered
20 logs.
21 """
22 if len(self._log) > 0:
23 self.logger.post(self._log, priority=level)
24 if isinstance(self.logger, LogSink):
25 logs = self.logger.pop()
26 if logs > 0:
27 print logs
28 self._log = ""
29
30 def push(self, msg, newline=True):
31 """Push logs into the buffer. post needs to be called to send them."""
32 from asap import rcParams
33 if self._enabled:
34 if rcParams["verbose"]:
35 sep = ""
36 self._log = sep.join([self._log, msg])
37 if newline:
38 self._log += "\n"
39
40 def enable(self, flag=True):
41 """Enable (or disable) logging."""
42 self._enabled = flag
43
44 def disable(self, flag=False):
45 """Disable (or enable) logging"""
46 self._enabled = flag
47
48asaplog = _asaplog()
49
50def print_log_dec(f, level):
51 @wraps_dec(f)
52 def wrap_it(*args, **kw):
53 val = f(*args, **kw)
54 print_log(level)
55 return val
56 return wrap_it
57
58def print_log(level='INFO'):
59 """Alias for asaplog.post."""
60 asaplog.post(level)
Note: See TracBrowser for help on using the repository browser.