From f9d978f16a8faed92782459b69d8969461408fed Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 8 Mar 2025 14:21:05 +0100 Subject: [PATCH] chore: migrate set_log_levels to log_config --- freqtrade/loggers/__init__.py | 36 +++++++++++++++++++++++------ freqtrade/loggers/set_log_levels.py | 19 --------------- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/freqtrade/loggers/__init__.py b/freqtrade/loggers/__init__.py index a0553ff45..f6f4985e6 100644 --- a/freqtrade/loggers/__init__.py +++ b/freqtrade/loggers/__init__.py @@ -8,7 +8,6 @@ from freqtrade.exceptions import OperationalException from freqtrade.loggers.buffering_handler import FTBufferingHandler from freqtrade.loggers.ft_rich_handler import FtRichHandler from freqtrade.loggers.rich_console import get_rich_console -from freqtrade.loggers.set_log_levels import set_loggers # from freqtrade.loggers.std_err_stream_handler import FTStdErrStreamHandler @@ -79,12 +78,34 @@ FT_LOGGING_CONFIG = { } -def _set_loggers(log_config: dict[str, Any]) -> None: +def _set_log_levels( + log_config: dict[str, Any], verbosity: int = 0, api_verbosity: str = "info" +) -> None: + """ + Set the logging level for the different loggers + """ if "loggers" not in log_config: log_config["loggers"] = {} - if "freqtrade" not in log_config["loggers"]: - log_config["loggers"]["freqtrade"] = {"level": "INFO", "propagate": True} + # Set default levels for third party libraries + third_party_loggers = { + "freqtrade": logging.INFO if verbosity <= 1 else logging.DEBUG, + "requests": logging.INFO if verbosity <= 1 else logging.DEBUG, + "urllib3": logging.INFO if verbosity <= 1 else logging.DEBUG, + "httpcore": logging.INFO if verbosity <= 1 else logging.DEBUG, + "ccxt.base.exchange": logging.INFO if verbosity <= 2 else logging.DEBUG, + "telegram": logging.INFO, + "httpx": logging.WARNING, + "werkzeug": logging.ERROR if api_verbosity == "error" else logging.INFO, + } + + # Add third party loggers to the configuration + for logger_name, level in third_party_loggers.items(): + if logger_name not in log_config["loggers"]: + log_config["loggers"][logger_name] = { + "level": logging.getLevelName(level), + "propagate": True, + } def _add_root_handler(log_config: dict[str, Any], handler_name: str): @@ -166,7 +187,6 @@ def _create_log_config(config: Config) -> dict[str, Any]: "non-root user, delete and recreate the directories you need, and then try " "again." ) - _set_loggers(log_config) return log_config @@ -174,7 +194,11 @@ def setup_logging(config: Config) -> None: """ Process -v/--verbose, --logfile options """ + verbosity = config["verbosity"] + log_config = _create_log_config(config) + _set_log_levels(log_config, verbosity, config.get("api_server", {}).get("verbosity", "info")) + logging.config.dictConfig(log_config) # Add buffer handler to root logger @@ -188,8 +212,6 @@ def setup_logging(config: Config) -> None: logging.info("Logfile configured") # Set verbosity levels - verbosity = config["verbosity"] logging.root.setLevel(logging.INFO if verbosity < 1 else logging.DEBUG) - set_loggers(verbosity, config.get("api_server", {}).get("verbosity", "info")) logger.info("Verbosity set to %s", verbosity) diff --git a/freqtrade/loggers/set_log_levels.py b/freqtrade/loggers/set_log_levels.py index 24f26ffd6..d794c5ebc 100644 --- a/freqtrade/loggers/set_log_levels.py +++ b/freqtrade/loggers/set_log_levels.py @@ -4,25 +4,6 @@ import logging logger = logging.getLogger(__name__) -def set_loggers(verbosity: int = 0, api_verbosity: str = "info") -> None: - """ - Set the logging level for third party libraries - :param verbosity: Verbosity level. amount of `-v` passed to the command line - :return: None - """ - for logger_name in ("requests", "urllib3", "httpcore"): - logging.getLogger(logger_name).setLevel(logging.INFO if verbosity <= 1 else logging.DEBUG) - logging.getLogger("ccxt.base.exchange").setLevel( - logging.INFO if verbosity <= 2 else logging.DEBUG - ) - logging.getLogger("telegram").setLevel(logging.INFO) - logging.getLogger("httpx").setLevel(logging.WARNING) - - logging.getLogger("werkzeug").setLevel( - logging.ERROR if api_verbosity == "error" else logging.INFO - ) - - __BIAS_TESTER_LOGGERS = [ "freqtrade.resolvers", "freqtrade.strategy.hyper",