From 732638ae2dc5a4424136ca8a598fa0bb5ff38031 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Tue, 18 Feb 2020 16:09:34 -0500 Subject: [PATCH] Delegate logging to `tractor` Gives us PIDs and task ids in logs which is much more sane for debugging and cuts down on superfluous code. --- piker/log.py | 76 ++++------------------------------------------------ 1 file changed, 5 insertions(+), 71 deletions(-) diff --git a/piker/log.py b/piker/log.py index d3f6d769..7d92d566 100644 --- a/piker/log.py +++ b/piker/log.py @@ -1,65 +1,19 @@ """ Log like a forester! """ -from functools import partial -import sys import logging import json -import colorlog + +import tractor from pygments import highlight, lexers, formatters _proj_name = 'piker' -# Super sexy formatting thanks to ``colorlog``. -# (NOTE: we use the '{' format style) -# Here, `thin_white` is just the layperson's gray. -LOG_FORMAT = ( - # "{bold_white}{log_color}{asctime}{reset}" - "{log_color}{asctime}{reset}" - " {bold_white}{thin_white}({reset}" - "{thin_white}{processName}: {threadName}{reset}{bold_white}{thin_white})" - " {reset}{log_color}[{reset}{bold_log_color}{levelname}{reset}{log_color}]" - " {log_color}{name}" - " {thin_white}{filename}{log_color}:{reset}{thin_white}{lineno}{log_color}" - " {reset}{bold_white}{thin_white}{message}" -) -DATE_FORMAT = '%b %d %H:%M:%S' -LEVELS = { - 'GARBAGE': 1, - 'TRACE': 5, - 'PROFILE': 15, - 'QUIET': 1000, -} -STD_PALETTE = { - 'CRITICAL': 'red', - 'ERROR': 'red', - 'WARNING': 'yellow', - 'INFO': 'green', - 'DEBUG': 'white', - 'TRACE': 'cyan', - 'GARBAGE': 'blue', -} -BOLD_PALETTE = { - 'bold': { - level: f"bold_{color}" for level, color in STD_PALETTE.items()} -} - def get_logger(name: str = None) -> logging.Logger: '''Return the package log or a sub-log for `name` if provided. ''' - log = rlog = logging.getLogger(_proj_name) - if name and name != _proj_name: - log = rlog.getChild(name) - log.level = rlog.level - - # additional levels - for name, val in LEVELS.items(): - logging.addLevelName(val, name) - # ex. create ``log.trace()`` - setattr(log, name.lower(), partial(log.log, val)) - - return log + return tractor.log.get_logger(name=name, _root_name=_proj_name) def get_console_log(level: str = None, name: str = None) -> logging.Logger: @@ -67,28 +21,8 @@ def get_console_log(level: str = None, name: str = None) -> logging.Logger: Yeah yeah, i know we can use ``DictConfig``. You do it... ''' - log = get_logger(name) # our root logger - - if level: - log.setLevel(level.upper() if not isinstance(level, int) else level) - - for handler in log.handlers: - if getattr(handler, 'stream', None) and handler.stream == sys.stderr: - break - else: - handler = logging.StreamHandler() - - formatter = colorlog.ColoredFormatter( - LOG_FORMAT, - datefmt=DATE_FORMAT, - log_colors=STD_PALETTE, - secondary_log_colors=BOLD_PALETTE, - style='{', - ) - handler.setFormatter(formatter) - log.addHandler(handler) - - return log + return tractor.log.get_console_log( + level, name=name, _root_name=_proj_name) # our root logger def colorize_json(data, style='algol_nu'):