32 lines
955 B
Python
32 lines
955 B
Python
"""Grab the global logger instance."""
|
|
|
|
# Copyright (c) IPython Development Team.
|
|
# Distributed under the terms of the Modified BSD License.
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
from typing import Any
|
|
|
|
_logger: logging.Logger | logging.LoggerAdapter[Any] | None = None
|
|
|
|
|
|
def get_logger() -> logging.Logger | logging.LoggerAdapter[Any]:
|
|
"""Grab the global logger instance.
|
|
|
|
If a global Application is instantiated, grab its logger.
|
|
Otherwise, grab the root logger.
|
|
"""
|
|
global _logger # noqa: PLW0603
|
|
|
|
if _logger is None:
|
|
from .config import Application
|
|
|
|
if Application.initialized():
|
|
_logger = Application.instance().log
|
|
else:
|
|
_logger = logging.getLogger("traitlets")
|
|
# Add a NullHandler to silence warnings about not being
|
|
# initialized, per best practice for libraries.
|
|
_logger.addHandler(logging.NullHandler())
|
|
return _logger
|