|
|
""" |
|
|
Logger utility for LifeUnity AI Cognitive Twin System. |
|
|
Provides centralized logging functionality with different log levels. |
|
|
""" |
|
|
|
|
|
import logging |
|
|
import os |
|
|
from datetime import datetime |
|
|
from pathlib import Path |
|
|
|
|
|
|
|
|
class CognitiveTwinLogger: |
|
|
"""Custom logger for the Cognitive Twin system.""" |
|
|
|
|
|
def __init__(self, name: str = "CognitiveTwin", log_dir: str = "logs"): |
|
|
""" |
|
|
Initialize the logger. |
|
|
|
|
|
Args: |
|
|
name: Logger name |
|
|
log_dir: Directory to store log files |
|
|
""" |
|
|
self.logger = logging.getLogger(name) |
|
|
self.logger.setLevel(logging.DEBUG) |
|
|
|
|
|
|
|
|
log_path = Path(log_dir) |
|
|
log_path.mkdir(exist_ok=True) |
|
|
|
|
|
|
|
|
formatter = logging.Formatter( |
|
|
'%(asctime)s - %(name)s - %(levelname)s - %(message)s', |
|
|
datefmt='%Y-%m-%d %H:%M:%S' |
|
|
) |
|
|
|
|
|
|
|
|
console_handler = logging.StreamHandler() |
|
|
console_handler.setLevel(logging.INFO) |
|
|
console_handler.setFormatter(formatter) |
|
|
|
|
|
|
|
|
log_file = log_path / f"{name}_{datetime.now().strftime('%Y%m%d')}.log" |
|
|
file_handler = logging.FileHandler(log_file) |
|
|
file_handler.setLevel(logging.DEBUG) |
|
|
file_handler.setFormatter(formatter) |
|
|
|
|
|
|
|
|
if not self.logger.handlers: |
|
|
self.logger.addHandler(console_handler) |
|
|
self.logger.addHandler(file_handler) |
|
|
|
|
|
def debug(self, message: str): |
|
|
"""Log debug message.""" |
|
|
self.logger.debug(message) |
|
|
|
|
|
def info(self, message: str): |
|
|
"""Log info message.""" |
|
|
self.logger.info(message) |
|
|
|
|
|
def warning(self, message: str): |
|
|
"""Log warning message.""" |
|
|
self.logger.warning(message) |
|
|
|
|
|
def error(self, message: str, exc_info: bool = False): |
|
|
"""Log error message.""" |
|
|
self.logger.error(message, exc_info=exc_info) |
|
|
|
|
|
def critical(self, message: str, exc_info: bool = False): |
|
|
"""Log critical message.""" |
|
|
self.logger.critical(message, exc_info=exc_info) |
|
|
|
|
|
|
|
|
|
|
|
logger = CognitiveTwinLogger() |
|
|
|
|
|
|
|
|
def get_logger(name: str = "CognitiveTwin") -> CognitiveTwinLogger: |
|
|
""" |
|
|
Get a logger instance. |
|
|
|
|
|
Args: |
|
|
name: Logger name |
|
|
|
|
|
Returns: |
|
|
CognitiveTwinLogger instance |
|
|
""" |
|
|
return CognitiveTwinLogger(name) |
|
|
|