Alessio-Chiovelli commited on
Commit
3fd6cd5
·
verified ·
1 Parent(s): a191da0

Upload MyLogger.py

Browse files
Files changed (1) hide show
  1. MyLogger.py +46 -0
MyLogger.py ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import sys
3
+ import logging
4
+ from functools import wraps
5
+ from pprint import pprint
6
+
7
+ class CustomLogger:
8
+ def __init__(self, log_dir='logs', log_name='custom_logger'):
9
+
10
+ log_file = log_name + '.log'
11
+ # Create logs directory if it doesn't exist
12
+ if not os.path.exists(log_dir):
13
+ os.makedirs(log_dir)
14
+ self.formatter = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
15
+ # Configure logging
16
+ self.logger = logging.getLogger(log_file)
17
+ self.logger.setLevel(logging.DEBUG)
18
+ file_handler = logging.FileHandler(os.path.join(log_dir, log_file))
19
+ file_handler.setLevel(logging.DEBUG)
20
+ formatter = logging.Formatter(self.formatter)
21
+ file_handler.setFormatter(formatter)
22
+ self.logger.addHandler(file_handler)
23
+
24
+ def log_to_stdout_and_file(self, func):
25
+ @wraps(func)
26
+ def wrapper(*args, **kwargs):
27
+ try:
28
+ self.logger.info(f"Executing function: {func.__name__}")
29
+ result = func(*args, **kwargs)
30
+ pprint(result)
31
+ self.logger.info(f"Result: {result}")
32
+ return result
33
+ except Exception as e:
34
+ self.logger.error(f"Error in function {func.__name__}: {e}")
35
+ raise
36
+ return wrapper
37
+
38
+ # Example usage
39
+ if __name__ == "__main__":
40
+ custom_logger = CustomLogger()
41
+
42
+ @custom_logger.log_to_stdout_and_file
43
+ def example_function(x, y):
44
+ return {'sum': x + y, 'product': x * y}
45
+
46
+ example_function(3, 5)