인프런 파일명 변경 테스트
This commit is contained in:
69
debugger1.py
Normal file
69
debugger1.py
Normal file
@@ -0,0 +1,69 @@
|
||||
import functools
|
||||
import logging
|
||||
from functools import wraps
|
||||
import time
|
||||
|
||||
logging.basicConfig(
|
||||
level=logging.DEBUG,
|
||||
format="[%(asctime)s] [%(levelname)s] %(name)s: %(message)s",
|
||||
datefmt="%Y-%m-%d %H:%M:%S %z",
|
||||
)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def timerun(func):
|
||||
"""Calculate the execution time of a method and return it back"""
|
||||
|
||||
@functools.wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
start = time.time()
|
||||
result = func(*args, **kwargs)
|
||||
duration = time.time() - start
|
||||
|
||||
logger.debug(f"Duration of {func.__name__} function was {duration}")
|
||||
|
||||
return result
|
||||
|
||||
return wrapper
|
||||
|
||||
|
||||
def yommi_logger(
|
||||
*, logging_type
|
||||
): # I prefer keyword-only arugments for decorators, but that is your call...
|
||||
def decorator(func):
|
||||
@wraps(func)
|
||||
def debug(*args, **kwargs):
|
||||
logger.debug(f"Calling : {func.__name__}")
|
||||
logger.debug(f"args, kwargs: {args, kwargs}")
|
||||
start = time.time()
|
||||
result = func(*args, **kwargs)
|
||||
duration = time.time() - start
|
||||
logger.debug(f"{func.__name__} function was {duration}")
|
||||
return result
|
||||
|
||||
@wraps(func)
|
||||
def another_option(*args, **kwargs):
|
||||
print("another option")
|
||||
return func(*args, **kwargs)
|
||||
|
||||
options = {"debug": debug, "another_option": another_option}
|
||||
return options[logging_type]
|
||||
|
||||
return decorator
|
||||
|
||||
|
||||
class LoggerYommiOld:
|
||||
def __init__(self, logging_type: str = "debug"):
|
||||
self.logging_function = getattr(self, logging_type)
|
||||
|
||||
def __call__(self, decorated_function: callable):
|
||||
def f(*args, **kwargs):
|
||||
return self.logging_function(decorated_function, *args, **kwargs)
|
||||
|
||||
return f
|
||||
|
||||
def debug(self, decorated_function, *args, **kwargs):
|
||||
print("starting function")
|
||||
output = decorated_function(*args, **kwargs)
|
||||
print("Completing Function")
|
||||
return output
|
||||
Reference in New Issue
Block a user