Source code for gefest.core.utils.logger

import datetime

from loguru import logger
from pydantic import RootModel

from gefest.core.geometry import Structure


[docs] class LogDispatcher: """Makes some logging stuff.""" def __init__(self, log_dir: str = 'logs', run_name='new_run') -> None: self.timenow = '{date:%Y-%m-%d_%H_%M_%S}'.format(date=datetime.datetime.now()) self.log_dir = log_dir self.run_name = run_name
[docs] def log_pop(self, pop: list[Structure], step: str): """Saves provided population to json.""" inividual_log_handler = logger.add( f'{self.log_dir}/{self.run_name}_{self.timenow}/{step.zfill(5)}.log', level=4, format='{message}', filter=lambda record: record['level'].name in ['Level 4'], ) for ind in pop: dump = RootModel[Structure](ind).model_dump_json( exclude={'polygons': {'__all__': {'points': {'__all__': {'coords'}}}}}, ) logger.log(4, dump) logger.remove(inividual_log_handler)