import os from .function_logger import FunctionLogger import time import functools def log_entry_exit_async(func): @functools.wraps(func) async def wrapper(*args, **kwargs): file_path = os.path.relpath(func.__code__.co_filename) function_logger = FunctionLogger(sender_id="log_entry_exit_async", receiver_id="function_logger") start_time = time.process_time_ns() try: await function_logger.log_enter(func.__name__, file_path) result = await func(*args, **kwargs) await function_logger.log_exit(func.__name__, file_path, time.process_time_ns() - start_time) return result except Exception as exception: await function_logger.log_exception( exception=exception, function=func.__name__, file=file_path, excution_time_in_ns=time.process_time_ns() - start_time) raise return wrapper