def output_start_end_log(func):
 @functools.wraps(func)
 def wrap(self, *args, **kwargs):
  'Wrap the method to add logging function.'
  def _output_start_end_log(*_args, **_kwargs):
   'Output the log of the start and the end of the method.'
   output_log(MSG.METHOD_START, method=func.__name__, config_group=self.configuration.config_group)
   ret = func(*_args, **_kwargs)
   output_log(MSG.METHOD_END, method=func.__name__, config_group=self.configuration.config_group)
   return ret
  return _output_start_end_log(self, *args, **kwargs)
 return wrap

def output_start_end_log ( func ) : @ functools . wraps ( func ) def wrap ( self , * args , ** kwargs ) : def _output_start_end_log ( * _args , ** _kwargs ) : output_log ( MSG . METHOD_START , method = func . __name__ , config_group = self . configuration . config_group ) ret = func ( * _args , ** _kwargs ) output_log ( MSG . METHOD_END , method = func . __name__ , config_group = self . configuration . config_group ) return ret return _output_start_end_log ( self , * args , ** kwargs ) return wrap
output the log of the start and the end of the method .