import logging
import os
import env_setup.global_config
import config
# Local root directory
local_root_directory = config.output_folder
# Project root directory
project_root_directory = env_setup.global_config.main_directory_name
# General files directory name
general_files_directory_name = env_setup.global_config.general_files_name
# Logging file name
logging_file_name = "app.log"
[docs]
class LogPath:
N100Building = rf"{local_root_directory}\{project_root_directory}\{env_setup.global_config.scale_n100}\{env_setup.global_config.object_bygning}\{general_files_directory_name}\{logging_file_name}"
N100River = rf"{local_root_directory}\{project_root_directory}\{env_setup.global_config.scale_n100}\{env_setup.global_config.object_elv_bekk}\{general_files_directory_name}\{logging_file_name}"
[docs]
def setup_logger(scale, object_type, log_directory="logs", filename=logging_file_name):
"""
WORK IN PROGRESS NOT DONE
Creates a logger for the specified scale and object type.
Log files will be stored in a directory structure matching the scale and object type.
:param scale: The scale for the log (e.g., 'n100').
:param object_type: The object type for the log (e.g., 'bygning').
:param log_directory: Base directory for logs. Defaults to 'logs'.
:param filename: Default filename for the log. Defaults to 'app.log'.
:return: Logger instance for the specified scale and object type.
"""
# Construct the log file path
log_path = os.path.join(
config.output_folder,
env_setup.global_config.main_directory_name,
scale,
object_type,
log_directory,
)
if not os.path.exists(log_path):
os.makedirs(log_path)
full_log_path = os.path.join(log_path, filename)
# Configure logger
logger = logging.getLogger(f"{scale}_{object_type}")
if not logger.handlers: # Avoiding adding handlers multiple times
logger.setLevel(logging.INFO)
file_handler = logging.FileHandler(full_log_path)
formatter = logging.Formatter(
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
return logger