import logging
import sys
_DEFAULT_LEVEL = logging.INFO
_configured = False
def configure_logging(level=None):
global _configured
if _configured:
return
import os
if level is None:
if os.environ.get("FOLDIT_ML_DEBUG"):
level = logging.DEBUG
else:
level = _DEFAULT_LEVEL
root_logger = logging.getLogger("foldit_runner")
root_logger.setLevel(level)
stderr_handler = logging.StreamHandler(sys.stderr)
stderr_handler.setLevel(level)
stderr_handler.setFormatter(
logging.Formatter(fmt="[%(name)s] %(message)s", datefmt="%H:%M:%S")
)
root_logger.addHandler(stderr_handler)
log_path = os.environ.get("FOLDIT_PLUGIN_LOG_PATH")
if log_path:
try:
file_handler = logging.FileHandler(log_path)
file_handler.setLevel(level)
file_handler.setFormatter(
logging.Formatter(
fmt="%(asctime)s %(levelname)s %(name)s: %(message)s"
)
)
root_logger.addHandler(file_handler)
except OSError as e:
sys.stderr.write(
f"[foldit_plugin_sdk] could not open FOLDIT_PLUGIN_LOG_PATH={log_path}: {e}\n"
)
_configured = True
def get_logger(name):
configure_logging()
if name.startswith("model_plugins."):
name = name[len("model_plugins.") :]
elif name == "__main__":
name = "main"
return logging.getLogger(f"foldit_runner.{name}")