2020import logging .handlers
2121import os .path as op
2222import traceback
23+ from functools import partial
2324from threading import Lock
2425from typing import Dict , Any
2526
@@ -251,6 +252,31 @@ def modular_input_end(logger: logging.Logger, modular_input_name: str):
251252 )
252253
253254
255+ def _base_error_log (
256+ logger ,
257+ exc : Exception ,
258+ exe_label ,
259+ full_msg : bool = True ,
260+ msg_before : str = None ,
261+ msg_after : str = None ,
262+ ):
263+ log_exception (
264+ logger ,
265+ exc ,
266+ exc_label = exe_label ,
267+ full_msg = full_msg ,
268+ msg_before = msg_before ,
269+ msg_after = msg_after ,
270+ )
271+
272+
273+ log_connection_error = partial (_base_error_log , exe_label = "Connection Error" )
274+ log_configuration_error = partial (_base_error_log , exe_label = "Configuration Error" )
275+ log_permission_error = partial (_base_error_log , exe_label = "Permission Error" )
276+ log_authentication_error = partial (_base_error_log , exe_label = "Authentication Error" )
277+ log_server_error = partial (_base_error_log , exe_label = "Server Error" )
278+
279+
254280def events_ingested (
255281 logger : logging .Logger ,
256282 modular_input_name : str ,
@@ -303,12 +329,34 @@ def events_ingested(
303329def log_exception (
304330 logger : logging .Logger ,
305331 e : Exception ,
332+ exc_label : str ,
306333 full_msg : bool = True ,
307334 msg_before : str = None ,
308335 msg_after : str = None ,
309336 log_level : int = logging .ERROR ,
310337):
311- """General function to log exceptions."""
338+ """General function to log exceptions.
339+
340+ Arguments:
341+ logger: Add-on logger.
342+ e: Exception to log.
343+ exc_label: label for the error to categorize it.
344+ full_msg: if set to True, full traceback will be logged. Default: True
345+ msg_before: custom message before exception traceback. Default: None
346+ msg_after: custom message after exception traceback. Default: None
347+ log_level: Log level to log exception. Default: ERROR.
348+ """
349+
350+ msg = _get_exception_message (e , full_msg , msg_before , msg_after )
351+ logger .log (log_level , f'exc_l="{ exc_label } " { msg } ' )
352+
353+
354+ def _get_exception_message (
355+ e : Exception ,
356+ full_msg : bool = True ,
357+ msg_before : str = None ,
358+ msg_after : str = None ,
359+ ) -> str :
312360 exc_type , exc_value , exc_traceback = type (e ), e , e .__traceback__
313361 if full_msg :
314362 error = traceback .format_exception (exc_type , exc_value , exc_traceback )
@@ -318,5 +366,4 @@ def log_exception(
318366 msg_start = msg_before if msg_before is not None else ""
319367 msg_mid = "" .join (error )
320368 msg_end = msg_after if msg_after is not None else ""
321- msg = f"{ msg_start } \n { msg_mid } \n { msg_end } "
322- logger .log (log_level , msg )
369+ return f"{ msg_start } \n { msg_mid } \n { msg_end } "
0 commit comments