SND@LHC Software
Loading...
Searching...
No Matches
method_logger.MethodLogger Class Reference
Inheritance diagram for method_logger.MethodLogger:
Collaboration diagram for method_logger.MethodLogger:

Public Member Functions

 __init__ (self, wrapped_instance, sink=sys.stdout)
 
 method_logger (self, met)
 
 __getattr__ (self, attr)
 

Protected Attributes

 _class
 
 _sink
 
 _prefix
 

Detailed Description

This class wraps a instance of an arbitrary class, intercepts all its
method calls and logs them to a file (default: `sys.stdout`).

>>> import method_logger as ml
>>> from StringIO import StringIO
>>> class TestClass(object):
...     def __init__(self):
...         pass
...     def func(*args, **kwargs):
...         pass
...
>>> cl = TestClass()
>>> sink = StringIO()
>>> lg = ml.MethodLogger(cl, sink=sink)
>>> lg.func(3, y=8, foo='bar')
>>> sink.getvalue()
"TestClass.func(3, y=8, foo='bar')\\n"
>>> sink.close()

Definition at line 8 of file method_logger.py.

Constructor & Destructor Documentation

◆ __init__()

method_logger.MethodLogger.__init__ (   self,
  wrapped_instance,
  sink = sys.stdout 
)

Definition at line 29 of file method_logger.py.

29 def __init__(self, wrapped_instance, sink=sys.stdout):
30 self._class = wrapped_instance
31 self._sink = sink
32 self._prefix = type(wrapped_instance).__name__ + '.'
33

Member Function Documentation

◆ __getattr__()

method_logger.MethodLogger.__getattr__ (   self,
  attr 
)

Definition at line 45 of file method_logger.py.

45 def __getattr__(self, attr):
46 return self.method_logger(getattr(self._class, attr))

◆ method_logger()

method_logger.MethodLogger.method_logger (   self,
  met 
)

Definition at line 34 of file method_logger.py.

34 def method_logger(self, met):
35 qualified_name = self._prefix + str(met.__name__)
36 @wraps(met)
37 def _logger(*args, **kwargs):
38 args_str = ', '.join(repr(arg) for arg in args)
39 kwargs_str = ', '.join(str(k) + '=' + repr(v) for (k,v) in six.iteritems(kwargs))
40 all_args_str = args_str + (', ' if len(kwargs_str) > 0 else '') + kwargs_str
41 print('{0}({1})'.format(qualified_name, all_args_str), file=self._sink)
42 return met.__call__(*args, **kwargs)
43 return _logger
44

Member Data Documentation

◆ _class

method_logger.MethodLogger._class
protected

Definition at line 30 of file method_logger.py.

◆ _prefix

method_logger.MethodLogger._prefix
protected

Definition at line 32 of file method_logger.py.

◆ _sink

method_logger.MethodLogger._sink
protected

Definition at line 31 of file method_logger.py.


The documentation for this class was generated from the following file: