diff --git a/freqtrade/loggers/__init__.py b/freqtrade/loggers/__init__.py index 390f210c0..1cc0590a1 100644 --- a/freqtrade/loggers/__init__.py +++ b/freqtrade/loggers/__init__.py @@ -10,7 +10,7 @@ from freqtrade.loggers.std_err_stream_handler import FTStdErrStreamHandler logger = logging.getLogger(__name__) -LOGFORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' +LOGFORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" # Initialize bufferhandler - will be used for /log endpoints bufferHandler = FTBufferingHandler(1000) @@ -33,9 +33,7 @@ def setup_logging_pre() -> None: ones the user desires beforehand. """ logging.basicConfig( - level=logging.INFO, - format=LOGFORMAT, - handlers=[FTStdErrStreamHandler(), bufferHandler] + level=logging.INFO, format=LOGFORMAT, handlers=[FTStdErrStreamHandler(), bufferHandler] ) @@ -44,20 +42,20 @@ def setup_logging(config: Config) -> None: Process -v/--verbose, --logfile options """ # Log level - verbosity = config['verbosity'] + verbosity = config["verbosity"] logging.root.addHandler(bufferHandler) - logfile = config.get('logfile') + logfile = config.get("logfile") if logfile: - s = logfile.split(':') - if s[0] == 'syslog': + s = logfile.split(":") + if s[0] == "syslog": # Address can be either a string (socket filename) for Unix domain socket or # a tuple (hostname, port) for UDP socket. # Address can be omitted (i.e. simple 'syslog' used as the value of # config['logfilename']), which defaults to '/dev/log', applicable for most # of the systems. - address = (s[1], int(s[2])) if len(s) > 2 else s[1] if len(s) > 1 else '/dev/log' + address = (s[1], int(s[2])) if len(s) > 2 else s[1] if len(s) > 1 else "/dev/log" handler_sl = get_existing_handlers(SysLogHandler) if handler_sl: logging.root.removeHandler(handler_sl) @@ -65,14 +63,16 @@ def setup_logging(config: Config) -> None: # No datetime field for logging into syslog, to allow syslog # to perform reduction of repeating messages if this is set in the # syslog config. The messages should be equal for this. - handler_sl.setFormatter(Formatter('%(name)s - %(levelname)s - %(message)s')) + handler_sl.setFormatter(Formatter("%(name)s - %(levelname)s - %(message)s")) logging.root.addHandler(handler_sl) - elif s[0] == 'journald': # pragma: no cover + elif s[0] == "journald": # pragma: no cover try: from cysystemd.journal import JournaldLogHandler except ImportError: - raise OperationalException("You need the cysystemd python package be installed in " - "order to use logging to journald.") + raise OperationalException( + "You need the cysystemd python package be installed in " + "order to use logging to journald." + ) handler_jd = get_existing_handlers(JournaldLogHandler) if handler_jd: logging.root.removeHandler(handler_jd) @@ -80,19 +80,21 @@ def setup_logging(config: Config) -> None: # No datetime field for logging into journald, to allow syslog # to perform reduction of repeating messages if this is set in the # syslog config. The messages should be equal for this. - handler_jd.setFormatter(Formatter('%(name)s - %(levelname)s - %(message)s')) + handler_jd.setFormatter(Formatter("%(name)s - %(levelname)s - %(message)s")) logging.root.addHandler(handler_jd) else: handler_rf = get_existing_handlers(RotatingFileHandler) if handler_rf: logging.root.removeHandler(handler_rf) - handler_rf = RotatingFileHandler(logfile, - maxBytes=1024 * 1024 * 10, # 10Mb - backupCount=10) + handler_rf = RotatingFileHandler( + logfile, + maxBytes=1024 * 1024 * 10, # 10Mb + backupCount=10, + ) handler_rf.setFormatter(Formatter(LOGFORMAT)) logging.root.addHandler(handler_rf) logging.root.setLevel(logging.INFO if verbosity < 1 else logging.DEBUG) - set_loggers(verbosity, config.get('api_server', {}).get('verbosity', 'info')) + set_loggers(verbosity, config.get("api_server", {}).get("verbosity", "info")) - logger.info('Verbosity set to %s', verbosity) + logger.info("Verbosity set to %s", verbosity) diff --git a/freqtrade/loggers/buffering_handler.py b/freqtrade/loggers/buffering_handler.py index e4621fa79..02409708a 100644 --- a/freqtrade/loggers/buffering_handler.py +++ b/freqtrade/loggers/buffering_handler.py @@ -10,6 +10,7 @@ class FTBufferingHandler(BufferingHandler): self.acquire() try: # Keep half of the records in buffer. - self.buffer = self.buffer[-int(self.capacity / 2):] + records_to_keep = -int(self.capacity / 2) + self.buffer = self.buffer[records_to_keep:] finally: self.release() diff --git a/freqtrade/loggers/set_log_levels.py b/freqtrade/loggers/set_log_levels.py index abaee1523..24f26ffd6 100644 --- a/freqtrade/loggers/set_log_levels.py +++ b/freqtrade/loggers/set_log_levels.py @@ -1,35 +1,32 @@ - import logging logger = logging.getLogger(__name__) -def set_loggers(verbosity: int = 0, api_verbosity: str = 'info') -> None: +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( + 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("telegram").setLevel(logging.INFO) + logging.getLogger("httpx").setLevel(logging.WARNING) - logging.getLogger('werkzeug').setLevel( - logging.ERROR if api_verbosity == 'error' else logging.INFO + logging.getLogger("werkzeug").setLevel( + logging.ERROR if api_verbosity == "error" else logging.INFO ) __BIAS_TESTER_LOGGERS = [ - 'freqtrade.resolvers', - 'freqtrade.strategy.hyper', - 'freqtrade.configuration.config_validation', + "freqtrade.resolvers", + "freqtrade.strategy.hyper", + "freqtrade.configuration.config_validation", ] diff --git a/freqtrade/loggers/std_err_stream_handler.py b/freqtrade/loggers/std_err_stream_handler.py index 487a7c100..d7f7e4052 100644 --- a/freqtrade/loggers/std_err_stream_handler.py +++ b/freqtrade/loggers/std_err_stream_handler.py @@ -18,7 +18,7 @@ class FTStdErrStreamHandler(Handler): try: msg = self.format(record) # Don't keep a reference to stderr - this can be problematic with progressbars. - sys.stderr.write(msg + '\n') + sys.stderr.write(msg + "\n") self.flush() except RecursionError: raise