Source code for enhomie.homie.addons.logger
"""
Functions and routines associated with Enasis Network Homie Automate.
This file is part of Enasis Network software eco-system. Distribution
is permitted, for more information consult the project license file.
"""
from threading import Thread
from typing import Any
from typing import TYPE_CHECKING
from encommon.types import DictStrAny
from encommon.types import clsname
from .queue import HomieQueueItem
if TYPE_CHECKING:
from ..homie import Homie
[docs]
class HomieLogger:
"""
Methods for extending use of underlying logging library.
"""
__homie: 'Homie'
def __init__(
self,
homie: 'Homie',
) -> None:
"""
Initialize instance for class using provided parameters.
"""
self.__homie = homie
[docs]
def start(
self,
) -> None:
"""
Initialize the Python logging library using parameters.
"""
homie = self.__homie
config = homie.config
logger = config.logger
logger.start()
[docs]
def stop(
self,
) -> None:
"""
Deinitialize the Python logging library using parameters.
"""
homie = self.__homie
config = homie.config
logger = config.logger
logger.stop()
def __process(
self,
kwargs: DictStrAny,
) -> None:
"""
Process the keyword arguments handling relevant values.
:param kwargs: Keyword arguments for populating message.
"""
base = kwargs.get('base')
item = kwargs.get('item')
name = kwargs.get('name')
threads = (
HomieQueueItem,
Thread)
prefix = '<enhomie.'
if isinstance(base, threads):
kwargs['base'] = (
clsname(base))
elif str(base)[:9] == prefix:
kwargs['base'] = (
clsname(base))
if isinstance(item, threads):
kwargs['item'] = (
clsname(item))
elif str(item)[:9] == prefix:
kwargs['item'] = (
clsname(item))
if (hasattr(name, 'name')
and name is not None):
kwargs['name'] = name.name
[docs]
def log(
self,
**kwargs: Any,
) -> None:
"""
Pass the provided keyword arguments into logger object.
.. note::
Uses method :py:meth:`encommon.config.Logger.log`.
:param kwargs: Keyword arguments for populating message.
"""
homie = self.__homie
config = homie.config
logger = config.logger
self.__process(kwargs)
logger.log(**kwargs)
[docs]
def log_c(
self,
**kwargs: Any,
) -> None:
"""
Pass the provided keyword arguments into logger object.
.. note::
Uses method :py:meth:`encommon.config.Logger.log_c`.
:param kwargs: Keyword arguments for populating message.
"""
homie = self.__homie
config = homie.config
logger = config.logger
self.__process(kwargs)
logger.log_c(**kwargs)
[docs]
def log_d(
self,
**kwargs: Any,
) -> None:
"""
Pass the provided keyword arguments into logger object.
.. note::
Uses method :py:meth:`encommon.config.Logger.log_d`.
:param kwargs: Keyword arguments for populating message.
"""
homie = self.__homie
config = homie.config
logger = config.logger
self.__process(kwargs)
logger.log_d(**kwargs)
[docs]
def log_e(
self,
**kwargs: Any,
) -> None:
"""
Pass the provided keyword arguments into logger object.
.. note::
Uses method :py:meth:`encommon.config.Logger.log_e`.
:param kwargs: Keyword arguments for populating message.
"""
homie = self.__homie
config = homie.config
logger = config.logger
self.__process(kwargs)
logger.log_e(**kwargs)
[docs]
def log_i(
self,
**kwargs: Any,
) -> None:
"""
Pass the provided keyword arguments into logger object.
.. note::
Uses method :py:meth:`encommon.config.Logger.log_i`.
:param kwargs: Keyword arguments for populating message.
"""
homie = self.__homie
config = homie.config
logger = config.logger
self.__process(kwargs)
logger.log_i(**kwargs)
[docs]
def log_w(
self,
**kwargs: Any,
) -> None:
"""
Pass the provided keyword arguments into logger object.
.. note::
Uses method :py:meth:`encommon.config.Logger.log_w`.
:param kwargs: Keyword arguments for populating message.
"""
homie = self.__homie
config = homie.config
logger = config.logger
self.__process(kwargs)
logger.log_w(**kwargs)