From 7db62689c41b874b931b52f5f1a6b7645c27396b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 16 Mar 2025 09:50:58 +0100 Subject: [PATCH] test: add test for json formatter --- freqtrade/loggers/json_formatter.py | 1 - tests/test_log_setup.py | 51 +++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/freqtrade/loggers/json_formatter.py b/freqtrade/loggers/json_formatter.py index 97fe67b7b..ac4e2fbb5 100644 --- a/freqtrade/loggers/json_formatter.py +++ b/freqtrade/loggers/json_formatter.py @@ -17,7 +17,6 @@ class JsonFormatter(logging.Formatter): time_format: str = "%Y-%m-%dT%H:%M:%S", msec_format: str = "%s.%03dZ", ): - print(fmt_dict) self.fmt_dict = fmt_dict if fmt_dict is not None else {"message": "message"} self.default_time_format = time_format self.default_msec_format = msec_format diff --git a/tests/test_log_setup.py b/tests/test_log_setup.py index 9c3b530bf..169a65005 100644 --- a/tests/test_log_setup.py +++ b/tests/test_log_setup.py @@ -1,4 +1,5 @@ import logging +import re import sys import pytest @@ -179,6 +180,56 @@ def test_set_loggers_journald_importerror(import_fails): logger.handlers = orig_handlers +@pytest.mark.usefixtures("keep_log_config_loggers") +def test_set_loggers_json_format(capsys): + logger = logging.getLogger() + orig_handlers = logger.handlers + logger.handlers = [] + + config = { + "ft_tests_force_logging": True, + "verbosity": 2, + "log_config": { + "version": 1, + "formatters": { + "json": { + "()": "freqtrade.loggers.json_formatter.JsonFormatter", + "fmt_dict": { + "timestamp": "asctime", + "level": "levelname", + "logger": "name", + "message": "message", + }, + } + }, + "handlers": { + "json": { + "class": "logging.StreamHandler", + "formatter": "json", + } + }, + "root": { + "handlers": ["json"], + "level": "DEBUG", + }, + }, + } + + setup_logging_pre() + setup_logging(config) + assert len(logger.handlers) == 2 + assert [x for x in logger.handlers if type(x).__name__ == "StreamHandler"] + assert [x for x in logger.handlers if isinstance(x, FTBufferingHandler)] + + logger.info("Test message") + + captured = capsys.readouterr() + assert re.search(r'{"timestamp": ".*"Test message".*', captured.err) + + # reset handlers to not break pytest + logger.handlers = orig_handlers + + def test_reduce_verbosity(): setup_logging_pre() reduce_verbosity_for_bias_tester()