decorators.py
import logging
def set_logging(name='test'):
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
# console
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
# file
file_handler = logging.FileHandler(f'{name}.log')
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
def print_log(msg):
if msg:
logging.debug(msg)
else:
logging.debug("--------------------------------------")
def function_tracer(func):
def wrapper(*args, **kwargs):
try:
print_log('')
print_log(f'{func.__name__} started')
func(*args, **kwargs)
print_log(f'{func.__name__} completed')
print_log('')
except Exception as e:
print_log('')
print_log(f'Error occured in {func.__name__}')
print_log(e)
print_log('')
return wrapper
set_logging()
test.py
from decorators import function_tracer
@function_tracer
def simple():
print("hello world")
@function_tracer
def simple2():
printt("hello world")
simple()
simple2()
만들어진 test.log
2021-10-10 17:12:53,793 DEBUG --------------------------------------
2021-10-10 17:12:53,793 DEBUG simple started
2021-10-10 17:12:53,794 DEBUG simple completed
2021-10-10 17:12:53,794 DEBUG --------------------------------------
2021-10-10 17:12:53,794 DEBUG --------------------------------------
2021-10-10 17:12:53,795 DEBUG simple2 started
2021-10-10 17:12:53,795 DEBUG --------------------------------------
2021-10-10 17:12:53,795 DEBUG Error occured in simple2
2021-10-10 17:12:53,795 DEBUG name 'printt' is not defined
2021-10-10 17:12:53,795 DEBUG --------------------------------------
댓글 0