mrradix commited on
Commit
5819cb0
·
verified ·
1 Parent(s): 594f2c9

Update utils/logging.py

Browse files
Files changed (1) hide show
  1. utils/logging.py +41 -143
utils/logging.py CHANGED
@@ -1,157 +1,55 @@
1
- """
2
- Logging utilities for the MONA application
3
- Fixed version with all required functions
4
- """
5
-
6
  import logging
7
- import os
8
  import sys
 
9
  from datetime import datetime
10
- from pathlib import Path
11
-
12
 
13
- def setup_logging(log_level=logging.INFO, log_file=None):
14
- """
15
- Set up logging configuration
16
-
17
- Args:
18
- log_level: Logging level (default: INFO)
19
- log_file: Optional log file path
20
- """
21
  # Create logs directory if it doesn't exist
22
- if log_file:
23
- log_dir = Path(log_file).parent
24
- log_dir.mkdir(exist_ok=True)
25
-
26
- # Configure logging format
27
- formatter = logging.Formatter(
28
- '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
29
- datefmt='%Y-%m-%d %H:%M:%S'
 
 
30
  )
31
 
32
- # Set up root logger
33
- root_logger = logging.getLogger()
34
- root_logger.setLevel(log_level)
35
-
36
- # Clear existing handlers
37
- root_logger.handlers.clear()
38
-
39
- # Console handler
40
- console_handler = logging.StreamHandler(sys.stdout)
41
- console_handler.setFormatter(formatter)
42
- root_logger.addHandler(console_handler)
43
-
44
- # File handler if specified
45
- if log_file:
46
- file_handler = logging.FileHandler(log_file)
47
- file_handler.setFormatter(formatter)
48
- root_logger.addHandler(file_handler)
49
-
50
 
51
  def get_logger(name=None):
52
- """
53
- Get a logger instance
54
-
55
- Args:
56
- name: Logger name (default: __name__)
57
-
58
- Returns:
59
- logging.Logger: Logger instance
60
- """
61
  if name is None:
62
- name = __name__
63
-
64
- logger = logging.getLogger(name)
65
-
66
- # If no handlers are set up, set up basic logging
67
- if not logger.handlers and not logging.getLogger().handlers:
68
- setup_logging()
69
-
70
- return logger
71
-
72
 
73
- def log_error(message, error=None, extra_data=None):
74
- """
75
- Log error messages with optional error details and extra data
76
-
77
- Args:
78
- message (str): The error message to log
79
- error (Exception, optional): The exception object if available
80
- extra_data (dict, optional): Additional data to include in log
81
- """
82
- logger = get_logger()
83
 
84
  if error:
85
- error_msg = f"{message}: {str(error)}"
86
- if hasattr(error, '__traceback__'):
87
- import traceback
88
- error_msg += f"\nTraceback: {traceback.format_exc()}"
89
  else:
90
- error_msg = message
91
-
92
- if extra_data:
93
- logger.error(error_msg, extra=extra_data)
94
- else:
95
- logger.error(error_msg)
96
-
97
-
98
- def log_warning(message, extra_data=None):
99
- """
100
- Log warning messages
101
-
102
- Args:
103
- message (str): The warning message to log
104
- extra_data (dict, optional): Additional data to include in log
105
- """
106
- logger = get_logger()
107
- if extra_data:
108
- logger.warning(message, extra=extra_data)
109
- else:
110
- logger.warning(message)
111
-
112
-
113
- def log_info(message, extra_data=None):
114
- """
115
- Log info messages
116
-
117
- Args:
118
- message (str): The info message to log
119
- extra_data (dict, optional): Additional data to include in log
120
- """
121
- logger = get_logger()
122
- if extra_data:
123
- logger.info(message, extra=extra_data)
124
- else:
125
- logger.info(message)
126
-
127
-
128
- def log_debug(message, extra_data=None):
129
- """
130
- Log debug messages
131
-
132
- Args:
133
- message (str): The debug message to log
134
- extra_data (dict, optional): Additional data to include in log
135
- """
136
- logger = get_logger()
137
- if extra_data:
138
- logger.debug(message, extra=extra_data)
139
- else:
140
- logger.debug(message)
141
-
142
-
143
- def log_exception(message, exc_info=True):
144
- """
145
- Log exceptions with full traceback
146
-
147
- Args:
148
- message (str): The exception message to log
149
- exc_info (bool): Whether to include exception info
150
- """
151
- logger = get_logger()
152
- logger.exception(message, exc_info=exc_info)
153
-
154
-
155
- # Initialize logging when module is imported
156
- if __name__ != "__main__":
157
- setup_logging()
 
 
 
 
 
 
1
  import logging
 
2
  import sys
3
+ import traceback
4
  from datetime import datetime
5
+ import os
 
6
 
7
+ def setup_logging():
8
+ """Setup logging configuration for the application"""
 
 
 
 
 
 
9
  # Create logs directory if it doesn't exist
10
+ os.makedirs('logs', exist_ok=True)
11
+
12
+ # Configure logging
13
+ logging.basicConfig(
14
+ level=logging.INFO,
15
+ format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
16
+ handlers=[
17
+ logging.StreamHandler(sys.stdout),
18
+ logging.FileHandler(f'logs/app_{datetime.now().strftime("%Y%m%d")}.log', mode='a')
19
+ ]
20
  )
21
 
22
+ logger = logging.getLogger('mona_app')
23
+ logger.info("Logging setup completed successfully")
24
+ return logger
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
  def get_logger(name=None):
27
+ """Get a logger instance"""
 
 
 
 
 
 
 
 
28
  if name is None:
29
+ name = 'mona_app'
30
+ return logging.getLogger(name)
 
 
 
 
 
 
 
 
31
 
32
+ def log_error(message, error=None, logger_name=None):
33
+ """Log error with optional traceback"""
34
+ logger = get_logger(logger_name)
 
 
 
 
 
 
 
35
 
36
  if error:
37
+ logger.error(f"{message}: {str(error)}")
38
+ logger.error(f"Traceback: {traceback.format_exc()}")
 
 
39
  else:
40
+ logger.error(message)
41
+
42
+ def log_info(message, logger_name=None):
43
+ """Log info message"""
44
+ logger = get_logger(logger_name)
45
+ logger.info(message)
46
+
47
+ def log_warning(message, logger_name=None):
48
+ """Log warning message"""
49
+ logger = get_logger(logger_name)
50
+ logger.warning(message)
51
+
52
+ def log_debug(message, logger_name=None):
53
+ """Log debug message"""
54
+ logger = get_logger(logger_name)
55
+ logger.debug(message)