Source code for mqed.utils.logging_utils
# logging_bootstrap.py
from loguru import logger
import logging, sys
from pathlib import Path
[docs]
class InterceptHandler(logging.Handler):
[docs]
def emit(self, record):
try:
level = logger.level(record.levelname).name
except ValueError:
level = record.levelno
logger.opt(depth=6, exception=record.exc_info).log(level, record.getMessage())
def setup_loggers_hydra_aware():
# Try to grab the Hydra runtime dir; fallback to CWD if not initialized (e.g., during unit tests)
try:
from hydra.core.hydra_config import HydraConfig
if HydraConfig.initialized():
outdir = Path(HydraConfig.get().runtime.output_dir)
job_name = HydraConfig.get().job.name
else:
outdir = Path.cwd()
job_name = "run"
except Exception:
outdir = Path.cwd()
job_name = "run"
outdir.mkdir(parents=True, exist_ok=True)
logfile = outdir / f"{job_name}.log"
logger.remove()
logger.add(sys.stdout,
level="INFO",
format="<green>{time}</green> | <level>{message}</level>")
logger.add(logfile, level="DEBUG", encoding="utf-8", backtrace=False, diagnose=False)
# Bridge stdlib logging into Loguru so libraries show up too
logging.basicConfig(handlers=[InterceptHandler()], level=logging.DEBUG)
logger.success(f"Logging -> {logfile}")
log_citation()
return logfile
def log_citation():
logger.info(
"MQED-QD | If you use this software, please cite: "
"Liu, G., Wang, S. and Chen, H.T., 2026. MQED-QD: An Open-Source Package for Quantum Dynamics Simulation in Complex Dielectric Environments. arXiv preprint arXiv:2603.05378."
)