Source code for aequilibrae.log

import os
import tempfile
import logging

from aequilibrae.parameters import Parameters


[docs] class Log: """API entry point to the log file contents .. code-block:: python >>> project = Project() >>> project.new(project_path) >>> log = project.log() # We get all entries for the log file >>> entries = log.contents() # Or clear everything (NO UN-DOs) >>> log.clear() """
[docs] def __init__(self, project_base_path: str): self.log_file_path = os.path.join(project_base_path, "aequilibrae.log")
[docs] def contents(self) -> list: """Returns contents of log file :Returns: **log_contents** (:obj:`list`): List with all entries in the log file """ with open(self.log_file_path, "r") as file: return [x.strip() for x in file.readlines()]
[docs] def clear(self): """Clears the log file. Use it wisely""" with open(self.log_file_path, "w") as _: pass
def _setup_logger(): # CREATE THE GLOBAL LOGGER logger = logging.getLogger("aequilibrae") logger.setLevel(logging.DEBUG) return logger def get_log_handler(log_file: str, ensure_file_exists=True): """Return a log handler that writes to the given log_file""" if os.path.exists(log_file) and not os.path.isfile(log_file): raise FileExistsError(f"{log_file} is not a valid file") if ensure_file_exists: open(log_file, "a").close() formatter = logging.Formatter("%(asctime)s;%(levelname)s ; %(message)s") handler = logging.FileHandler(log_file) handler.setFormatter(formatter) handler.name = "aequilibrae" handler.setLevel(logging.DEBUG) return handler global_logger = logger = _setup_logger()