Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/python/logging.py

    r1939 r1833  
    1 """This module presents a logging abstraction layer on top of casa.
    2 """
    3 __all__ = ["asaplog", "asaplog_post_dec", "AsapLogger"]
     1__all__ = ["asaplog", "print_log", "print_log_dec"]
    42
    5 import inspect
    63from asap.env import is_casapy
    74from asap.parameters import rcParams
     
    1310
    1411
    15 class AsapLogger(object):
    16     """Wrapper object to allow for both casapy and asap logging.
    17 
    18     Inside casapy this will connect to `taskinit.casalog`. Otherwise it will
    19     create its own casa log sink.
    20 
    21     .. note:: Do instantiate a new one - use the :obj:`asaplog` instead.
    22 
    23     """
     12class _asaplog(object):
     13    """Wrapper object to allow for both casapy and asap logging"""
    2414    def __init__(self):
    25         self._enabled = True
     15        self._enabled = False
    2616        self._log = ""
    2717        if is_casapy():
     
    3222            set_global_sink(self.logger)
    3323
    34     def post(self, level='INFO', origin=""):
     24    def post(self, level):
    3525        """Post the messages to the logger. This will clear the buffered
    3626        logs.
    37 
    38         Parameters:
    39 
    40             level:  The log level (severity). One of INFO, WARN, ERROR.
    41 
    4227        """
    4328        if not self._enabled:
    4429            return
     30        if not rcParams['verbose']:
     31            return
    4532
    46         if not origin:
    47             origin = inspect.getframeinfo(inspect.currentframe().f_back)[2]
    4833        logs = self._log.strip()
    4934        if len(logs) > 0:
    50             if isinstance(self.logger, LogSink):
    51                 #can't handle unicode in boost signature
    52                 logs = str(logs)
    53             self.logger.post(logs, priority=level, origin=origin)
     35           self.logger.post(logs, priority=level)
    5436        if isinstance(self.logger, LogSink):
    5537            logs = self.logger.pop().strip()
     
    5941
    6042    def push(self, msg, newline=True):
    61         """Push logs into the buffer. post needs to be called to send them.
    62 
    63         Parameters:
    64 
    65             msg:        the log message (string)
    66 
    67             newline:    should we terminate with a newline (default yes)
    68 
    69         """
     43        """Push logs into the buffer. post needs to be called to send them."""
     44        from asap import rcParams
    7045        if self._enabled:
    71             sep = ""
    72             self._log = sep.join([self._log, msg])
    73             if newline:
    74                 self._log += "\n"
     46            if rcParams["verbose"]:
     47                sep = ""
     48                self._log = sep.join([self._log, msg])
     49                if newline:
     50                    self._log += "\n"
    7551
    7652    def enable(self, flag=True):
     
    8258        self._enabled = flag
    8359
    84     def is_enabled(self):
    85         return self._enabled
     60asaplog = _asaplog()
    8661
    87 asaplog = AsapLogger()
    88 """Default asap logger"""
    89 
    90 def asaplog_post_dec(f):
    91     """Decorator which posts log at completion of the wrapped method.
    92 
    93     Example::
    94 
    95         @asaplog_post_dec
    96         def test(self):
    97             do_stuff()
    98             asaplog.push('testing...', False)
    99             do_more_stuff()
    100             asaplog.push('finished')
    101     """
     62def print_log_dec(f, level='INFO'):
    10263    @wraps_dec(f)
    10364    def wrap_it(*args, **kw):
    104         level = "INFO"
    105         try:
    106             val = f(*args, **kw)
    107             return val
    108         except Exception, ex:
    109             level = "ERROR"
    110             asaplog.push(str(ex))
    111             if rcParams['verbose']:
    112                 pass
    113             else:
    114                 raise
    115         finally:
    116             asaplog.post(level, f.func_name)
    117             #asaplog.post(level, ".".join([f.__module__,f.func_name]))
     65        val = f(*args, **kw)
     66        print_log(level)
     67        return val
    11868    return wrap_it
    11969
     70def print_log(level='INFO'):
     71    """Alias for asaplog.post."""
     72    asaplog.post(level)
Note: See TracChangeset for help on using the changeset viewer.