Spaces:
Runtime error
Runtime error
| import logging | |
| import os | |
| from logging.handlers import RotatingFileHandler | |
| from datetime import datetime | |
| # Get the current working directory | |
| #current_direction = os.path.dirname(os.path.abspath(__file__)) | |
| LOG_FILE=f"{datetime.now().strftime('%m_%d_%Y_%H_%M_%S')}" | |
| logs_path=os.path.join(os.getcwd(),"logs",LOG_FILE) | |
| os.makedirs(logs_path,exist_ok=True) | |
| # Define the logging configuration | |
| def setup_logger(file_name:str=None,api_app=None): | |
| if file_name is not None : | |
| LOG_FILE_PATH=os.path.join(logs_path,f"{file_name}.log") | |
| #log_formatter = logging.Formatter("%(asctime)s- %(name)s - %(levelname)s - %(message)s") | |
| # Modified log formatter to include filename, function name, and line number | |
| log_formatter = logging.Formatter("%(asctime)s - %(filename)s - %(funcName)s - Line %(lineno)d - %(levelname)s - %(message)s") | |
| # File handler for logging to a file | |
| file_handler = RotatingFileHandler(filename=LOG_FILE_PATH,maxBytes=5 * 1024 * 1024, backupCount=3) # Log file size is 5MB with 3 backups | |
| file_handler.setFormatter(log_formatter) | |
| file_handler.setLevel(logging.INFO) | |
| file_handler2 = RotatingFileHandler(filename=os.path.join(logs_path,"global.log"),maxBytes=5 * 1024 * 1024, backupCount=3) # Log file size is 5MB with 3 backups | |
| file_handler2.setFormatter(log_formatter) | |
| file_handler2.setLevel(logging.INFO) | |
| # Stream handler for console output (optional) | |
| console_handler = logging.StreamHandler() | |
| console_handler.setFormatter(log_formatter) | |
| console_handler.setLevel(logging.DEBUG) | |
| # Add handlers to the root logger for custom logging | |
| root_logger = logging.getLogger(file_name) | |
| root_logger.setLevel(logging.DEBUG) | |
| root_logger.addHandler(file_handler) | |
| root_logger.addHandler(file_handler2) | |
| #root_logger.addHandler(console_handler) | |
| if api_app is not None: | |
| # Get the FastAPI logger and attach handlers | |
| uvicorn_access_logger = logging.getLogger("uvicorn.access") # For request logging | |
| uvicorn_access_logger.setLevel(logging.INFO) | |
| uvicorn_access_logger.addHandler(file_handler) | |
| uvicorn_access_logger.addHandler(file_handler2) | |
| #api_logger.addHandler(console_handler) | |
| return uvicorn_access_logger | |
| else: | |
| return root_logger | |
| else: | |
| # Modified log formatter to include filename, function name, and line number | |
| log_formatter = logging.Formatter("%(asctime)s - %(filename)s - %(funcName)s - Line %(lineno)d - %(levelname)s - %(message)s") | |
| file_handler2 = RotatingFileHandler(filename=os.path.join(logs_path,"global.log"),maxBytes=5 * 1024 * 1024, backupCount=3) # Log file size is 5MB with 3 backups | |
| file_handler2.setFormatter(log_formatter) | |
| file_handler2.setLevel(logging.INFO) | |
| # Stream handler for console output (optional) | |
| console_handler = logging.StreamHandler() | |
| console_handler.setFormatter(log_formatter) | |
| console_handler.setLevel(logging.DEBUG) | |
| # Add handlers to the root logger for custom logging | |
| root_logger = logging.getLogger(file_name) | |
| root_logger.setLevel(logging.DEBUG) | |
| root_logger.addHandler(file_handler2) | |
| #root_logger.addHandler(console_handler) | |
| if api_app is not None: | |
| # Get the FastAPI logger and attach handlers | |
| uvicorn_access_logger = logging.getLogger("uvicorn.access") # For request logging | |
| uvicorn_access_logger.setLevel(logging.INFO) | |
| uvicorn_access_logger.addHandler(file_handler2) | |
| #api_logger.addHandler(console_handler) | |
| return uvicorn_access_logger | |
| else: | |
| return root_logger |