From 37d1dee88f8d09d80691be59a3c3136d36edaf27 Mon Sep 17 00:00:00 2001 From: Abraham Murciano Date: Thu, 20 Jan 2022 20:19:49 +0200 Subject: [PATCH 1/3] added logging --- .../handlers/discord_handler.py | 23 +++++++++++++++++-- tests/conftest.py | 10 +++++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/discord_lumberjack/handlers/discord_handler.py b/discord_lumberjack/handlers/discord_handler.py index 3945beb..957ab82 100644 --- a/discord_lumberjack/handlers/discord_handler.py +++ b/discord_lumberjack/handlers/discord_handler.py @@ -6,9 +6,16 @@ from discord_lumberjack.message_creators import BasicMessageCreator, MessageCreator from queue import Queue +logger = logging.getLogger(__name__) + _default_message_creator = BasicMessageCreator() +def _record_str(record: logging.LogRecord) -> str: + msg = record.getMessage() + return f'"{msg[50:]}"{"..." if len(msg) > 50 else ""}' + + class DiscordHandler(logging.Handler): """A base class for logging handlers that send messages to Discord. @@ -52,6 +59,7 @@ def emit(self, record: logging.LogRecord) -> None: Args: record (logging.LogRecord): The log record to send. """ + logger.debug(f"Enqueuing message {_record_str(record)}") self.__queue.put(record) def transform_message(self, message: Dict[str, Any]) -> Dict[str, Any]: @@ -98,7 +106,9 @@ def flush(self, raise_exceptions=True): Raises: Exception: If an exception was raised while sending a message, and `raise_exceptions` is True. """ + logger.debug("Flushing: Waiting for queue to empty...") self.__queue.join() + logger.debug("Flushing: Queue has been emptied.") if self.__exception and raise_exceptions: raise self.__exception @@ -108,12 +118,15 @@ def __consume(self) -> None: try: record = self.__queue.get() if record is self.__sentinel: - # Main thread has exited and all messages have been sent. - # We can exit the thread. + logger.debug("Consumer: Sentinel record received, exiting thread.") return + logger.debug(f"Consumer: Got message from queue: {_record_str(record)}") for msg in self.prepare_messages(record): self.__send_message(msg) except Exception as e: + logger.exception( + f"Consumer: Exception while consuming: {_record_str(record)}." + ) self.__exception = e self.handleError(record) finally: @@ -146,6 +159,10 @@ def __retry_send( retry_interval = initial_interval response = self.__session.post(self.__url, json=message) while response.status_code == 429: + logger.warning( + "Message was rejected due to too many requests. Waiting" + f" {retry_interval} seconds..." + ) time.sleep(retry_interval) retry_interval *= 2 response = self.__session.post(self.__url, json=message) @@ -153,5 +170,7 @@ def __retry_send( def __cleanup(self): """Waits for main thread to exit, then enqueues a sentinel to indicate that all messages have been sent.""" + logger.debug("Cleanup: Waiting for main thread to exit...") threading.main_thread().join() + logger.debug("Cleanup: Main thread exited. Signaling consumer to exit.") self.__queue.put(self.__sentinel) diff --git a/tests/conftest.py b/tests/conftest.py index 8e2415c..5057a63 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,7 +2,7 @@ from typing import Callable import os import logging -from logging import LogRecord, Logger +from logging import FileHandler, LogRecord, Logger from tests import utils from dotenv import load_dotenv from discord_lumberjack.handlers import DiscordHandler, DiscordDMHandler @@ -13,6 +13,14 @@ ) load_dotenv() +dl_logger = logging.getLogger("discord_lumberjack") +dl_logger.setLevel(logging.DEBUG) +dl_handler = FileHandler("discord_lumberjack.tests.log", mode="w") +dl_handler.setLevel(logging.DEBUG) +dl_handler.setFormatter( + logging.Formatter("%(asctime)s: %(name)s: %(levelname)s: %(message)s") +) +dl_logger.addHandler(dl_handler) @fixture( From 6259b58a3dd7c5265a9368dd61d1c512ce9299e2 Mon Sep 17 00:00:00 2001 From: Abraham Murciano Date: Thu, 20 Jan 2022 20:43:05 +0200 Subject: [PATCH 2/3] updated release flow --- .github/workflows/pypi.yml | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/.github/workflows/pypi.yml b/.github/workflows/pypi.yml index 1baf04d..45a7692 100644 --- a/.github/workflows/pypi.yml +++ b/.github/workflows/pypi.yml @@ -28,6 +28,17 @@ jobs: run: | python setup.py sdist bdist_wheel twine upload dist/* + - name: Get current version + id: get-current-version + run: | + echo ::set-output name=current-version::$(python setup.py --version) + - name: Close Current Milestone + uses: Beakyn/gha-close-milestone@v1.1.1 + env: + GITHUB_TOKEN: ${{ github.token }} + with: + repository: ${{ github.repository }} + milestone-title: v${{ steps.get-current-version.outputs.current-version }} - name: Get next version id: get-next-version run: | @@ -35,11 +46,14 @@ jobs: - name: Bump version run: | sed -i 's/^__version__ .*$/__version__ = "${{ steps.get-next-version.outputs.next-version }}"/g' discord_lumberjack/__init__.py - - name: Check for modified files - id: git-check - run: echo ::set-output name=modified::$(if git diff-index --quiet HEAD --; then echo "false"; else echo "true"; fi) + - name: Create Milestone + id: create-milestone + uses: WyriHaximus/github-action-create-milestone@v1.1.0 + with: + title: v${{ steps.get-next-version.outputs.next-version }} + env: + GITHUB_TOKEN: ${{ secrets.PERSONAL_GH_TOKEN }} - name: Create Pull Request - if: steps.git-check.outputs.modified == 'true' uses: peter-evans/create-pull-request@v3 with: title: Set version to ${{ steps.get-next-version.outputs.next-version }} @@ -48,9 +62,4 @@ jobs: token: ${{ secrets.PERSONAL_GH_TOKEN }} base: main labels: automerge - - name: Create Milestone - uses: WyriHaximus/github-action-create-milestone@v1.1.0 - with: - title: v${{ steps.get-next-version.outputs.next-version }} - env: - GITHUB_TOKEN: ${{ secrets.PERSONAL_GH_TOKEN }} + milestone: ${{ steps.create-milestone.outputs.number }} From a15c3ab486837173e2eb4e20cefd519931cc59ae Mon Sep 17 00:00:00 2001 From: Abraham Murciano Date: Thu, 20 Jan 2022 20:43:22 +0200 Subject: [PATCH 3/3] bumped version --- discord_lumberjack/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/discord_lumberjack/__init__.py b/discord_lumberjack/__init__.py index b30ea11..df11309 100644 --- a/discord_lumberjack/__init__.py +++ b/discord_lumberjack/__init__.py @@ -2,7 +2,7 @@ .. include:: ../README.md """ -__version__ = "1.0.5" +__version__ = "1.0.6" __author__ = "Abraham Murciano" from . import handlers