Source code for laser_cholera.metapop.logsetup
import logging
from datetime import datetime
from pathlib import Path
_log_file_handler = None
[docs]
def setup_logging(loglevel, outdir: Path):
global _log_file_handler
if _log_file_handler is not None:
return
log_file_path = Path(outdir) / f"{datetime.now():%Y%m%d%H%M%S}.log" # noqa: DTZ005
logger = logging.getLogger()
logger.setLevel(loglevel)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
class LazyFileHandler(logging.FileHandler):
def __init__(self, filename, mode="a", encoding=None, delay=False):
super().__init__(filename, mode, encoding, delay)
self._filename = filename
def emit(self, record):
if not self.stream:
self.stream = self._open()
super().emit(record)
_log_file_handler = LazyFileHandler(log_file_path, mode="a", encoding="utf-8", delay=True)
_log_file_handler.setFormatter(formatter)
logger.addHandler(_log_file_handler)
# console_handler = logging.StreamHandler()
# console_handler.setFormatter(formatter)
# logger.addHandler(console_handler)
return
setup_logging("WARNING", Path.cwd())
# setup_logging("DEBUG", Path.cwd())