source: trunk/python/logging.py@ 1827

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

Refactoring of init.py. Moved functionality into separate modules. Some minor fixes to make unit test work under 'standard asap'.

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