diff --git a/CHANGELOG.md b/CHANGELOG.md index ea9b0360..351f40d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.2.2] - Unreleased + +### Changed + +- Extra paramters added to RichLogging + ## [2.2.1] - 2020-06-14 ### Changed diff --git a/rich/logging.py b/rich/logging.py index 252a866e..19d59ef0 100644 --- a/rich/logging.py +++ b/rich/logging.py @@ -2,11 +2,12 @@ import logging from datetime import datetime from logging import Handler, LogRecord from pathlib import Path +from typing import List from . import get_console from rich._log_render import LogRender from rich.console import Console -from rich.highlighter import ReprHighlighter +from rich.highlighter import Highlighter, ReprHighlighter from rich.markup import render from rich.text import Text @@ -24,11 +25,18 @@ class RichHandler(Handler): KEYWORDS = ["GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS", "TRACE", "PATCH"] - def __init__(self, level: int = logging.NOTSET, console: Console = None) -> None: + def __init__( + self, + level: int = logging.NOTSET, + console: Console = None, + highlighter: Highlighter = None, + keywords: List[str] = None, + ) -> None: super().__init__(level=level) self.console = console or get_console() - self.highlighter = ReprHighlighter() + self.highlighter = highlighter or ReprHighlighter() self._log_render = LogRender(show_level=True) + self.keywords = self.KEYWORDS if keywords is None else keywords def emit(self, record: LogRecord) -> None: """Invoked by logging.""" @@ -41,7 +49,7 @@ class RichHandler(Handler): level = Text() level.append(record.levelname, log_style) message_text = Text(message) - message_text.highlight_words(self.KEYWORDS, "logging.keyword") + message_text.highlight_words(self.keywords, "logging.keyword") message_text = self.highlighter(message_text) self.console.print( diff --git a/tests/test_logging.py b/tests/test_logging.py index 63b5896b..b6979009 100644 --- a/tests/test_logging.py +++ b/tests/test_logging.py @@ -5,7 +5,9 @@ from rich.console import Console from rich.logging import RichHandler handler = RichHandler( - console=Console(file=io.StringIO(), force_terminal=True, width=80) + console=Console( + file=io.StringIO(), force_terminal=True, width=80, color_system="truecolor" + ) ) logging.basicConfig( level="NOTSET", format="%(message)s", datefmt="[DATE]", handlers=[handler] @@ -22,7 +24,7 @@ def make_log(): def test_log(): render = make_log() print(repr(render)) - expected = "\x1b[2;36m[DATE]\x1b[0m\x1b[2;36m \x1b[0m\x1b[32mDEBUG\x1b[0m foo \x1b]8;id=3292318898;file:///Users/willmcgugan/projects/rich/tests/test_logging.py\x1b\\\x1b[2mtest_logging.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:17\x1b[0m\n" + expected = "\x1b[2;36m[DATE]\x1b[0m\x1b[2;36m \x1b[0m\x1b[32mDEBUG\x1b[0m foo \x1b]8;id=3292318898;file:///Users/willmcgugan/projects/rich/tests/test_logging.py\x1b\\\x1b[2mtest_logging.py\x1b[0m\x1b]8;;\x1b\\\x1b[2m:19\x1b[0m\n" assert render == expected