Source code for qa_analytics_insights.log

"""Copyright (c) 2023, Aydin Abdi.

This module is responsible for logging.
"""

import functools
import sys
import time
from typing import Any, Callable

from loguru import logger


[docs] def verbose_logging() -> None: """loguru verbose.""" logger.remove() logger.add(sys.stderr, level="DEBUG") logger.add("outputs/qa_analytics_insights.log", level="DEBUG", rotation="1 day")
[docs] def default_logging() -> None: """loguru default.""" logger.remove() logger.add(sys.stderr, level="INFO") logger.add("outputs/qa_analytics_insights.log", level="DEBUG", rotation="1 day")
[docs] def log_execution_time(method: Callable[..., Any]) -> Callable[..., Any]: """ Decorator to log the time execution of a method. Args: method: The method to be decorated. Returns: The decorated method. """ @functools.wraps(method) def wrapper(*args: Any, **kwargs: Any) -> Any: """Wrapper function to log the time execution of a method. Args: *args: Variable length argument list. **kwargs: Arbitrary keyword arguments. Returns: The result of the method. """ start = time.time() result = method(*args, **kwargs) end = time.time() duration = end - start logger.info(f"{method.__name__} executed in {duration:.2f} seconds.") return result return wrapper