Skip to content

Commit a13985a

Browse files
committed
added logic for exactly once instantiation of the systemds python logger
1 parent 2fe0503 commit a13985a

File tree

1 file changed

+25
-12
lines changed

1 file changed

+25
-12
lines changed

src/main/python/systemds/context/systemds_context.py

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ class SystemDSContext(object):
6666
_log: logging.Logger
6767
__stdout: Queue = None
6868
__stderr: Queue = None
69+
_logging_initialized = False
6970

7071
def __init__(
7172
self,
@@ -779,22 +780,34 @@ def __setup_logging(self, level: int, py4j_level: int):
779780
:param level: The SystemDS logging part logging level.
780781
:param py4j_level: The Py4J logging level.
781782
"""
782-
783-
logging.basicConfig()
783+
# Set py4j level every time
784784
py4j = logging.getLogger("py4j.java_gateway")
785785
py4j.setLevel(py4j_level)
786786
py4j.propagate = False
787787

788+
if not SystemDSContext._logging_initialized:
789+
# Add handler only once
790+
logging.basicConfig()
791+
792+
root_logger = logging.getLogger(self.__class__.__name__)
793+
root_logger.handlers.clear()
794+
795+
f_handler = logging.StreamHandler()
796+
f_handler.setLevel(logging.NOTSET)
797+
f_handler.setFormatter(
798+
logging.Formatter("%(asctime)s - SystemDS- %(levelname)s - %(message)s")
799+
)
800+
801+
root_logger.addHandler(f_handler)
802+
root_logger.propagate = False
803+
804+
SystemDSContext._logging_initialized = True
805+
806+
# Per-instance logger setup
788807
self._log = logging.getLogger(self.__class__.__name__)
789808
self._log.setLevel(level)
790-
self._log.handlers.clear()
791-
792-
f_handler = logging.StreamHandler()
793-
f_handler.setLevel(level)
794-
f_handler.setFormatter(
795-
logging.Formatter("%(asctime)s - SystemDS- %(levelname)s - %(message)s")
809+
self._log.debug(
810+
"Logging setup done (SystemDS level: %s, Py4J level: %s)",
811+
logging.getLevelName(level),
812+
logging.getLevelName(py4j_level),
796813
)
797-
798-
self._log.addHandler(f_handler)
799-
self._log.propagate = False
800-
self._log.debug("Logging setup done")

0 commit comments

Comments
 (0)