Hi, I am learning to create python logging.
My goal is to create a logging module where I can use as decorator in my main app following is the logging code ---- start here--- import logging #DEBUG : Detailed information, typically of interest only when diagnosing problems. #INFO : Confirmation that things are working as expected. #WARNING (default): An indication that something unexpected happened, or indicative of some problem in the near future # (e.g. 'disk space low'). The software is still working as expected. #ERROR : Due to a more serious problem, the software has not been able to perform some function. #CRITICAL :A serious error, indicating that the program itself may be unable to continue running. from functools import wraps def logme(func_to_log): import logging #Without getLogger name it will log all in root logger = logging.getLogger(__name__) #Check log level within understanable parameter, set to INFO if is not permitable value def check_log_level(logleveltocheck): if any(logleveltocheck.upper() in lf for lf in ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']): return logleveltocheck.upper() else: return 'INFO' log_file_level='INFO' #check_log_level('info') log_console_level='INFO' #check_log_level('info') #root level logger.setLevel('INFO') formatter = logging.Formatter('%(asctime)s :: %(name)s :: %(levelname)s :: %(message)s') #Read log file from parameter logfile='mylogfile.log' file_handler = logging.FileHandler(logfile) file_handler.setLevel(log_file_level) file_handler.setFormatter(formatter) stream_handler = logging.StreamHandler() stream_handler.setLevel(log_console_level) stream_handler.setFormatter(formatter) logger.addHandler() logger.addHandler(stream_handler) #this wraps is to make sure we are returning func_to_log instead of wrapper @wraps(func_to_log) def wrapper(*args, **kwargs): logger.info('Ran with args: {}, and kwargs: {}'.format(args, kwargs)) return func_to_log(*args, **kwargs) return wrapper def timer(func_to_log): import time #this wraps is to make sure we are returning func_to_log instead of wrapper @wraps(func_to_log) def wrapper(*args, **kwargs): t1 = time.time() result = func_to_log(*args, **kwargs) t2 = time.time() - t1 print('{} ran in {} sec'.format(func_to_log.__name__, t2)) return result --- end here--- following is my main app -- start here-- from loggingme import logme def say_hello(name, age): print('Hello {}, I am {}'.format(name, age)) #say_hello=logme(say_hello('Sinardy')) @logme say_hello('Tonny', 8) --- end here--- I have error look like in the wrapper. Can someone point to me where is the issue or is this the correct way to create logging module? PS: above code with python 3.7.4 Thank you. regards, C -- https://mail.python.org/mailman/listinfo/python-list