Spaces:
Runtime error
Runtime error
File size: 3,915 Bytes
07fc447 |
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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
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 |