FairShip
Loading...
Searching...
No Matches
method_logger.MethodLogger Class Reference

Public Member Functions

None __init__ (self, wrapped_instance, sink=sys.stdout)
 
def method_logger (self, met)
 
def __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__()

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

Definition at line 30 of file method_logger.py.

30 def __init__(self, wrapped_instance, sink=sys.stdout) -> None:
31 self._class = wrapped_instance
32 self._sink = sink
33 self._prefix = type(wrapped_instance).__name__ + "."
34

Member Function Documentation

◆ __getattr__()

def method_logger.MethodLogger.__getattr__ (   self,
  attr 
)

Definition at line 48 of file method_logger.py.

48 def __getattr__(self, attr):
49 return self.method_logger(getattr(self._class, attr))

◆ method_logger()

def method_logger.MethodLogger.method_logger (   self,
  met 
)

Definition at line 35 of file method_logger.py.

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

Member Data Documentation

◆ _class

method_logger.MethodLogger._class
protected

Definition at line 31 of file method_logger.py.

◆ _prefix

method_logger.MethodLogger._prefix
protected

Definition at line 33 of file method_logger.py.

◆ _sink

method_logger.MethodLogger._sink
protected

Definition at line 32 of file method_logger.py.


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