Spaces:
Sleeping
Sleeping
File size: 2,217 Bytes
1fed057 e9c64b8 1fed057 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
import logging
import os
import sys
from datetime import datetime
class Logger:
"""
Centralized logging class for the application.
"""
_instance = None
def __new__(cls):
"""
Singleton pattern to ensure only one logger instance is created.
"""
if cls._instance is None:
cls._instance = super(Logger, cls).__new__(cls)
cls._instance._initialize_logger()
return cls._instance
def _initialize_logger(self):
"""
Initialize the logger with console and file handlers.
"""
# Create logs directory if it doesn't exist
logs_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'logs')
os.makedirs(logs_dir, exist_ok=True)
# Create a logger
self.logger = logging.getLogger('adf_chatbot')
self.logger.setLevel(logging.DEBUG)
# Create formatters
console_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
file_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(name)s - %(filename)s:%(lineno)d - %(message)s')
# Create console handler
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(console_formatter)
# Create file handler
log_file = os.path.join(logs_dir, f'adf_chatbot_{datetime.now().strftime("%Y%m%d")}.log')
file_handler = logging.FileHandler(log_file)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(file_formatter)
# Add handlers to logger
self.logger.addHandler(console_handler)
self.logger.addHandler(file_handler)
def get_logger(self):
"""
Get the logger instance.
Returns:
logging.Logger: The logger instance.
"""
return self.logger
# Create a global logger instance
logger = Logger().get_logger()
def get_logger():
"""
Get the global logger instance.
Returns:
logging.Logger: The global logger instance.
"""
return logger |