|
1 | 1 | import logging |
2 | | -import traceback |
3 | 2 |
|
4 | 3 | # concurrent.futures is optional |
5 | 4 | try: |
@@ -170,19 +169,33 @@ def __call(self, callback, args=None, kwargs=None, event=None): |
170 | 169 |
|
171 | 170 | return self.__call_sync(callback, args, kwargs, event) |
172 | 171 |
|
173 | | - @staticmethod |
174 | | - def __call_sync(callback, args=None, kwargs=None, event=None): |
| 172 | + @classmethod |
| 173 | + def __call_sync(cls, callback, args=None, kwargs=None, event=None): |
175 | 174 | try: |
176 | 175 | callback(*args, **kwargs) |
177 | | - |
178 | 176 | return True |
179 | 177 | except Exception as ex: |
180 | | - log.warn('Exception raised in callback %s for event "%s" - %s', callback, event, traceback.format_exc()) |
| 178 | + log.warn('[%s] Exception raised in: %s - %s' % (event, cls.__function_name(callback), ex), exc_info=True) |
181 | 179 | return False |
182 | 180 |
|
183 | 181 | def __call_async(self, callback, args=None, kwargs=None, event=None): |
184 | 182 | self.__threading_pool.submit(self.__call_sync, callback, args, kwargs, event) |
185 | 183 |
|
| 184 | + @staticmethod |
| 185 | + def __function_name(func): |
| 186 | + fragments = [] |
| 187 | + |
| 188 | + # Try append class name |
| 189 | + cls = getattr(func, 'im_class', None) |
| 190 | + |
| 191 | + if cls and hasattr(cls, '__name__'): |
| 192 | + fragments.append(cls.__name__) |
| 193 | + |
| 194 | + # Append function name |
| 195 | + fragments.append(func.__name__) |
| 196 | + |
| 197 | + return '.'.join(fragments) |
| 198 | + |
186 | 199 |
|
187 | 200 | class PipeHandler(object): |
188 | 201 | def __init__(self, event, callback): |
|
0 commit comments