diff --git a/src/zenlib/__init__.py b/src/zenlib/__init__.py index 68ff4cf..e521a18 100644 --- a/src/zenlib/__init__.py +++ b/src/zenlib/__init__.py @@ -3,6 +3,9 @@ from zenlib.types import NoDupFlatList, validatedDataclass from zenlib.namespace import nsexec +# Global setting for color logging +_ZENLIB_COLOR_TEXT = True + __all__ = [ "colorize", "ColorLognameFormatter", @@ -16,4 +19,5 @@ "update_init", "walk_dict", "check_dict", + "_ZENLIB_COLOR_TEXT", ] diff --git a/src/zenlib/logging/colorlognameformatter.py b/src/zenlib/logging/colorlognameformatter.py index 203c09c..8fd9344 100644 --- a/src/zenlib/logging/colorlognameformatter.py +++ b/src/zenlib/logging/colorlognameformatter.py @@ -1,8 +1,10 @@ __author__ = "desultory" -__version__ = "3.1.0" +__version__ = "3.2.0" from logging import Formatter +from zenlib.util.colorize import colorize + class ColorLognameFormatter(Formatter): """A logging formatter which colors the levelname of the log message. @@ -24,7 +26,6 @@ def __init__(self, fmt="%(levelname)s | %(message)s", *args, **kwargs): def format(self, record): # When calling format, replace the levelname with a colored version # Note: the string size is greatly increased because of the color codes - from zenlib.util import colorize old_levelname = record.levelname color_info = self.level_colors.get(record.levelname, {"color": "white"}) diff --git a/src/zenlib/logging/loggify.py b/src/zenlib/logging/loggify.py index 1520f04..3d7bf60 100644 --- a/src/zenlib/logging/loggify.py +++ b/src/zenlib/logging/loggify.py @@ -1,7 +1,7 @@ __author__ = "desultory" -__version__ = "3.0.0" +__version__ = "3.0.1" -from zenlib.util import merge_class +from zenlib.util.merge_class import merge_class from zenlib.logging.loggermixin import LoggerMixIn diff --git a/src/zenlib/logging/utils.py b/src/zenlib/logging/utils.py index 2e03d27..2381466 100644 --- a/src/zenlib/logging/utils.py +++ b/src/zenlib/logging/utils.py @@ -15,12 +15,16 @@ def _logger_has_handler(logger): def add_handler_if_not_exists(logger): - """Adds a ColorLognameFormatter handler to the logger if it doesn't have a handler already""" + """Adds a ColorLognameFormatter handler to the logger if it doesn't have a handler already + Coloring is diabled by the _ZENLIB_COLOR_TEXT variable in the colorize function + """ if _logger_has_handler(logger): return - color_stream_handler = StreamHandler() - color_stream_handler.setFormatter(ColorLognameFormatter(fmt="%(levelname)s | %(name)-42s | %(message)s")) - logger.addHandler(color_stream_handler) + stream_handler = StreamHandler() + formatter = ColorLognameFormatter(fmt="%(levelname)s | %(name)-42s | %(message)s") + stream_handler.setFormatter(formatter) + + logger.addHandler(stream_handler) logger.info("Added default handler to logger: %s", logger) diff --git a/src/zenlib/util/colorize.py b/src/zenlib/util/colorize.py index 5c880c5..5a532d2 100644 --- a/src/zenlib/util/colorize.py +++ b/src/zenlib/util/colorize.py @@ -1,8 +1,11 @@ -__version__ = "0.3.0" +__version__ = "0.4.0" + from dataclasses import dataclass from enum import Enum +import zenlib + ANSI_START = "\x1b[" @@ -57,6 +60,9 @@ def __str__(self): def colorize(text: str, color="white", *args, **kwargs) -> str: + if not zenlib._ZENLIB_COLOR_TEXT: + return text + try: color_code = Colors[color.upper()].value except (KeyError, AttributeError): diff --git a/src/zenlib/util/main_funcs.py b/src/zenlib/util/main_funcs.py index 03c0a9f..f546db9 100644 --- a/src/zenlib/util/main_funcs.py +++ b/src/zenlib/util/main_funcs.py @@ -2,13 +2,16 @@ Functions to help with the main() """ -__version__ = "1.4.1" +__version__ = "1.6.0" from argparse import ArgumentError, ArgumentParser, Namespace from importlib.metadata import version -from logging import FileHandler, Formatter, StreamHandler, getLogger +from logging import FileHandler, StreamHandler, getLogger from sys import argv +import zenlib +from zenlib.logging.colorlognameformatter import ColorLognameFormatter + def get_base_args(): return [ @@ -45,7 +48,6 @@ def get_kwargs_from_args(args, logger=None, base_kwargs={}, drop_base=True): def process_args(argparser, logger=None, strict=False): """Process argparser args, optionally configuring a logger.""" - from zenlib.logging import ColorLognameFormatter if strict: args = argparser.parse_args() @@ -76,7 +78,11 @@ def process_args(argparser, logger=None, strict=False): format_str += "%(levelname)s | %(name)-42s | %(message)s" else: format_str += "%(levelname)s | %(message)s" - formatter = ColorLognameFormatter(format_str) if not args.no_log_color else Formatter(format_str) + + if args.no_log_color: + zenlib._ZENLIB_COLOR_TEXT = False + + formatter = ColorLognameFormatter(format_str) # Add the formatter to the first handler, or add a new handler for handler in logger.handlers: