Coverage for C:\src\imod-python\imod\logging\logging_decorators.py: 100%
35 statements
« prev ^ index » next coverage.py v7.5.1, created at 2024-05-16 11:25 +0200
« prev ^ index » next coverage.py v7.5.1, created at 2024-05-16 11:25 +0200
1from functools import wraps
2from time import time
4from imod.logging.loglevel import LogLevel
7def standard_log_decorator(
8 start_level: LogLevel = LogLevel.INFO, end_level: LogLevel = LogLevel.DEBUG
9):
10 """
11 Decorator to print log messages announcing the beginning and end of the decorated method
12 """
14 def decorator(fun):
15 @wraps(fun)
16 def wrapper(*args, **kwargs):
17 from imod.logging import logger
19 # anounce start of function
20 object_name = str(type(args[0]).__name__)
21 start_message = f"Beginning execution of {fun.__module__}.{fun.__name__} for object {object_name}..."
23 # anounce start of function
24 start_time = time()
25 logger.log(loglevel=start_level, message=start_message, additional_depth=2)
27 # run function
28 return_value = fun(*args, **kwargs)
29 end_time = time()
31 # anounce end of function
32 end_message = f"Finished execution of {fun.__module__}.{fun.__name__} for object {object_name} in {end_time - start_time} seconds..."
33 logger.log(loglevel=end_level, message=end_message, additional_depth=2)
34 return return_value
36 return wrapper
38 return decorator
41def init_log_decorator(
42 start_level: LogLevel = LogLevel.INFO, end_level: LogLevel = LogLevel.DEBUG
43):
44 """
45 Decorator to print log messages announcing the beginning and end of initialization methods
46 """
48 def decorator(fun):
49 @wraps(fun)
50 def wrapper(*args, **kwargs):
51 from imod.logging import logger
53 # anounce start of function
54 object_name = str(type(args[0]).__name__)
55 start_message = f"Initializing the {object_name} package..."
56 start_time = time()
57 logger.log(loglevel=start_level, message=start_message, additional_depth=2)
59 # run function
60 return_value = fun(*args, **kwargs)
61 end_time = time()
63 # anounce end of function
64 end_message = f"Successfully initialized the {object_name} in {end_time - start_time} seconds..."
65 logger.log(loglevel=end_level, message=end_message, additional_depth=2)
66 return return_value
68 return wrapper
70 return decorator