Source code for aequilibrae.log

import logging
from pathlib import Path


[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: Path): self.log_file_path = 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: Path, ensure_file_exists=True): """Return a log handler that writes to the given log_file""" if log_file.exists() and not log_file.is_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()