From aac1742528865f5a3d2b83d603493a63249a9424 Mon Sep 17 00:00:00 2001 From: Jesus Lara Date: Fri, 10 Mar 2023 23:05:13 +0100 Subject: [PATCH] added new formatter --- navconfig/logging/__init__.py | 19 +++++++++++++++---- navconfig/logging/logger.pyi | 6 ++++++ navconfig/logging/logger.pyx | 23 +++++++++++++++++++++-- navconfig/version.py | 2 +- 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/navconfig/logging/__init__.py b/navconfig/logging/__init__.py index 91133ad..9dcbe84 100644 --- a/navconfig/logging/__init__.py +++ b/navconfig/logging/__init__.py @@ -30,8 +30,7 @@ """ logstash_logging = config.getboolean( 'logstash_enabled', section='logging', fallback=False) -logging_echo = config.getboolean( - 'logging_echo', section='logging', fallback=False) + logging_disable_other = config.getboolean( 'logging_disable_other', section='logging', fallback=False ) @@ -40,7 +39,8 @@ logging_enable_mailer = config.getboolean( 'logging_enable_mailer', section='logging', fallback=False ) - +logging_echo = config.getboolean( + 'logging_echo', section='logging', fallback=False) ## can disable the rotating file handler logging_enable_filehandler = config.getboolean( 'logging_enable_filehandler', section='logging', fallback=False @@ -202,4 +202,15 @@ logger = Logger(name=__name__, config=logging_config) # alias for debug printing -dprint = logger.debug +class dprint: + + instance: object = None + + def __new__(cls, *args, **kwargs): + if not cls.instance: + cls.instance = Logger(name='DEBUG', config=logging_config) + cls.instance.addConsole() + cls.instance.debug(*args, **kwargs) + + def __call__(self, *args, **kwargs): + self.instance.debug(*args, **kwargs) diff --git a/navconfig/logging/logger.pyi b/navconfig/logging/logger.pyi index 46a7650..97041d4 100644 --- a/navconfig/logging/logger.pyi +++ b/navconfig/logging/logger.pyi @@ -1,4 +1,5 @@ import logging +from typing import Any class Logger: @@ -7,3 +8,8 @@ class Logger: def info(self, message, *args, serialize = True, **kwargs) -> None: ... def debug(self, message, *args, serialize = True, **kwargs) -> None: ... def warning(self, message, *args, **kwargs) -> None: ... + def setLevel(self, level) -> None: ... + def addHandler(self, handler) -> None: ... + def error(self, message, *args, serialize = False, **kwargs) -> None: ... + def critical(self, message, *args, serialize = False, stacktrace = False, **kwargs) -> None: ... + def logger(self) -> Any: ... diff --git a/navconfig/logging/logger.pyx b/navconfig/logging/logger.pyx index be194ba..2977c0b 100644 --- a/navconfig/logging/logger.pyx +++ b/navconfig/logging/logger.pyx @@ -1,6 +1,7 @@ # cython: language_level=3, embedsignature=True, boundscheck=False, wraparound=True, initializedcheck=False # Copyright (C) 2018-present Jesus Lara # +import sys import asyncio from typing import Optional, Union import logging @@ -19,7 +20,7 @@ else: cdef class Logger(object): - __slots__ = ['name', '_debug', '_logger'] + __slots__ = ['name', '_debug', '_logger', 'logger'] cdef bool_t _debug cdef str name cdef object _logger @@ -37,15 +38,33 @@ cdef class Logger(object): self._logger = logging.getLogger(self.name) self._logger.setLevel(LOGLEVEL) + def addConsole(self) -> None: + # create a stream handler with sys.stdout as the stream + ch = logging.StreamHandler(stream=sys.stdout) + ch.setLevel(logging.DEBUG) + ch.setFormatter(ColoredFormatter()) + self._logger.addHandler(ch) + ## also, changing the logLevel of root logger + self._logger.setLevel(logging.DEBUG) + + @property + def logger(self): + return self._logger + def disable(self, name: str, loglevel = logging.CRITICAL): ## disable logger aio = logging.getLogger(name) aio.setLevel(loglevel) + def setLevel(self, level) -> None: + self._logger.setLevel(level) + + def addHandler(self, handler) -> None: + self._logger.addHandler(handler) + def setName(self, name: str): ## change the logger: logging.Logger.manager.loggerDict[self.name].name = name - # self._logger = logging.getLogger(name) self.name = name def info(self, message, *args, serialize = False, **kwargs): diff --git a/navconfig/version.py b/navconfig/version.py index e78824e..fc3ea42 100644 --- a/navconfig/version.py +++ b/navconfig/version.py @@ -3,7 +3,7 @@ __title__ = 'navconfig' __description__ = ('Configuration tool for all Navigator Services ' 'Tool for accessing Config info from different sources.') -__version__ = '1.1.1' +__version__ = '1.1.2' __author__ = 'Jesus Lara' __author_email__ = 'jesuslarag@gmail.com' __license__ = 'MIT'