64 lines
No EOL
2 KiB
Python
64 lines
No EOL
2 KiB
Python
"""
|
|
Logging utilities for the OpenEventDatabase.
|
|
Provides colored logging functionality based on message type.
|
|
"""
|
|
|
|
import logging
|
|
import sys
|
|
|
|
# ANSI color codes for terminal output
|
|
COLORS = {
|
|
'RESET': '\033[0m',
|
|
'RED': '\033[31m', # Error
|
|
'GREEN': '\033[32m', # Success
|
|
'YELLOW': '\033[33m', # Warning
|
|
'BLUE': '\033[34m', # Info
|
|
'MAGENTA': '\033[35m', # Debug
|
|
}
|
|
|
|
class ColoredLogger:
|
|
"""
|
|
A logger that outputs colored messages based on the log level.
|
|
"""
|
|
def __init__(self, name="OEDB"):
|
|
self.logger = logging.getLogger(name)
|
|
self.logger.setLevel(logging.INFO)
|
|
|
|
# Create console handler
|
|
console_handler = logging.StreamHandler(sys.stdout)
|
|
console_handler.setLevel(logging.INFO)
|
|
|
|
# Create formatter
|
|
formatter = logging.Formatter('%(asctime)s [%(name)s] [%(levelname)s] %(message)s')
|
|
console_handler.setFormatter(formatter)
|
|
|
|
# Add handler to logger
|
|
self.logger.addHandler(console_handler)
|
|
|
|
def info(self, message):
|
|
"""Log an info message (blue)"""
|
|
print(f"{COLORS['BLUE']}INFO: {message}{COLORS['RESET']}")
|
|
self.logger.info(message)
|
|
|
|
def success(self, message):
|
|
"""Log a success message (green)"""
|
|
print(f"{COLORS['GREEN']}SUCCESS: {message}{COLORS['RESET']}")
|
|
self.logger.info(f"SUCCESS: {message}")
|
|
|
|
def warning(self, message):
|
|
"""Log a warning message (yellow)"""
|
|
print(f"{COLORS['YELLOW']}WARNING: {message}{COLORS['RESET']}")
|
|
self.logger.warning(message)
|
|
|
|
def error(self, message):
|
|
"""Log an error message (red)"""
|
|
print(f"{COLORS['RED']}ERROR: {message}{COLORS['RESET']}")
|
|
self.logger.error(message)
|
|
|
|
def debug(self, message):
|
|
"""Log a debug message (magenta)"""
|
|
print(f"{COLORS['MAGENTA']}DEBUG: {message}{COLORS['RESET']}")
|
|
self.logger.debug(message)
|
|
|
|
# Create a global logger instance
|
|
logger = ColoredLogger() |