Source code for sourced.ml.core.utils.pickleable_logger
import logging
[docs]class PickleableLogger:
"""
Base class which provides the logging features through ``self._log``.
Can be safely pickled.
"""
def __init__(self, log_level=logging.INFO):
"""
Class constructor
:param log_level: logging level.
"""
self._log = logging.getLogger(self._get_log_name())
self._log.setLevel(log_level)
def __getstate__(self):
state = self.__dict__.copy()
state["_log"] = self._log.level
return state
def __setstate__(self, state):
self.__dict__.update(state)
log_level = state["_log"]
self._log = logging.getLogger(self._get_log_name())
self._log.setLevel(log_level)
def _get_log_name(self):
"""
Children must implement this method. It shall return the logger's name.
"""
raise NotImplementedError