move loggers setup out of configuration
This commit is contained in:
parent
bcf2bc6f8c
commit
ce2a5b2838
@ -6,8 +6,7 @@ import logging
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from argparse import Namespace
|
from argparse import Namespace
|
||||||
from logging.handlers import RotatingFileHandler
|
from typing import Any, Callable, Dict, Optional
|
||||||
from typing import Any, Callable, Dict, List, Optional
|
|
||||||
|
|
||||||
from jsonschema import Draft4Validator, validators
|
from jsonschema import Draft4Validator, validators
|
||||||
from jsonschema.exceptions import ValidationError, best_match
|
from jsonschema.exceptions import ValidationError, best_match
|
||||||
@ -15,25 +14,14 @@ from jsonschema.exceptions import ValidationError, best_match
|
|||||||
from freqtrade import OperationalException, constants
|
from freqtrade import OperationalException, constants
|
||||||
from freqtrade.exchange import (is_exchange_bad, is_exchange_available,
|
from freqtrade.exchange import (is_exchange_bad, is_exchange_available,
|
||||||
is_exchange_officially_supported, available_exchanges)
|
is_exchange_officially_supported, available_exchanges)
|
||||||
|
from freqtrade.loggers import setup_logging
|
||||||
from freqtrade.misc import deep_merge_dicts
|
from freqtrade.misc import deep_merge_dicts
|
||||||
from freqtrade.state import RunMode
|
from freqtrade.state import RunMode
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def set_loggers(log_level: int = 0) -> None:
|
|
||||||
"""
|
|
||||||
Set the logger level for Third party libs
|
|
||||||
:return: None
|
|
||||||
"""
|
|
||||||
|
|
||||||
logging.getLogger('requests').setLevel(logging.INFO if log_level <= 1 else logging.DEBUG)
|
|
||||||
logging.getLogger("urllib3").setLevel(logging.INFO if log_level <= 1 else logging.DEBUG)
|
|
||||||
logging.getLogger('ccxt.base.exchange').setLevel(
|
|
||||||
logging.INFO if log_level <= 2 else logging.DEBUG)
|
|
||||||
logging.getLogger('telegram').setLevel(logging.INFO)
|
|
||||||
|
|
||||||
|
|
||||||
def _extend_validator(validator_class):
|
def _extend_validator(validator_class):
|
||||||
"""
|
"""
|
||||||
Extended validator for the Freqtrade configuration JSON Schema.
|
Extended validator for the Freqtrade configuration JSON Schema.
|
||||||
@ -143,24 +131,10 @@ class Configuration(object):
|
|||||||
else:
|
else:
|
||||||
config.update({'verbosity': 0})
|
config.update({'verbosity': 0})
|
||||||
|
|
||||||
# Log to stdout, not stderr
|
|
||||||
log_handlers: List[logging.Handler] = [logging.StreamHandler(sys.stdout)]
|
|
||||||
if 'logfile' in self.args and self.args.logfile:
|
if 'logfile' in self.args and self.args.logfile:
|
||||||
config.update({'logfile': self.args.logfile})
|
config.update({'logfile': self.args.logfile})
|
||||||
|
|
||||||
# Allow setting this as either configuration or argument
|
setup_logging(config)
|
||||||
if 'logfile' in config:
|
|
||||||
log_handlers.append(RotatingFileHandler(config['logfile'],
|
|
||||||
maxBytes=1024 * 1024, # 1Mb
|
|
||||||
backupCount=10))
|
|
||||||
|
|
||||||
logging.basicConfig(
|
|
||||||
level=logging.INFO if config['verbosity'] < 1 else logging.DEBUG,
|
|
||||||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
|
||||||
handlers=log_handlers
|
|
||||||
)
|
|
||||||
set_loggers(config['verbosity'])
|
|
||||||
logger.info('Verbosity set to %s', config['verbosity'])
|
|
||||||
|
|
||||||
def _load_common_config(self, config: Dict[str, Any]) -> Dict[str, Any]:
|
def _load_common_config(self, config: Dict[str, Any]) -> Dict[str, Any]:
|
||||||
"""
|
"""
|
||||||
|
@ -16,7 +16,6 @@ from typing import Any, List
|
|||||||
|
|
||||||
from freqtrade import OperationalException
|
from freqtrade import OperationalException
|
||||||
from freqtrade.arguments import Arguments
|
from freqtrade.arguments import Arguments
|
||||||
from freqtrade.configuration import set_loggers
|
|
||||||
from freqtrade.worker import Worker
|
from freqtrade.worker import Worker
|
||||||
|
|
||||||
|
|
||||||
@ -32,8 +31,6 @@ def main(sysargv: List[str] = None) -> None:
|
|||||||
return_code: Any = 1
|
return_code: Any = 1
|
||||||
worker = None
|
worker = None
|
||||||
try:
|
try:
|
||||||
set_loggers()
|
|
||||||
|
|
||||||
arguments = Arguments(
|
arguments = Arguments(
|
||||||
sysargv,
|
sysargv,
|
||||||
'Free, open source crypto trading bot'
|
'Free, open source crypto trading bot'
|
||||||
|
@ -12,8 +12,9 @@ from jsonschema import Draft4Validator, ValidationError, validate
|
|||||||
|
|
||||||
from freqtrade import OperationalException, constants
|
from freqtrade import OperationalException, constants
|
||||||
from freqtrade.arguments import Arguments
|
from freqtrade.arguments import Arguments
|
||||||
from freqtrade.configuration import Configuration, set_loggers
|
from freqtrade.configuration import Configuration
|
||||||
from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL
|
from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL
|
||||||
|
from freqtrade.loggers import _set_loggers
|
||||||
from freqtrade.state import RunMode
|
from freqtrade.state import RunMode
|
||||||
from freqtrade.tests.conftest import log_has, log_has_re
|
from freqtrade.tests.conftest import log_has, log_has_re
|
||||||
|
|
||||||
@ -524,7 +525,7 @@ def test_cli_verbose_with_params(default_conf, mocker, caplog) -> None:
|
|||||||
mocker.patch('freqtrade.configuration.open', mocker.mock_open(
|
mocker.patch('freqtrade.configuration.open', mocker.mock_open(
|
||||||
read_data=json.dumps(default_conf)))
|
read_data=json.dumps(default_conf)))
|
||||||
# Prevent setting loggers
|
# Prevent setting loggers
|
||||||
mocker.patch('freqtrade.configuration.set_loggers', MagicMock)
|
mocker.patch('freqtrade.loggers._set_loggers', MagicMock)
|
||||||
arglist = ['-vvv']
|
arglist = ['-vvv']
|
||||||
args = Arguments(arglist, '').get_parsed_arg()
|
args = Arguments(arglist, '').get_parsed_arg()
|
||||||
|
|
||||||
@ -546,7 +547,7 @@ def test_set_loggers() -> None:
|
|||||||
previous_value2 = logging.getLogger('ccxt.base.exchange').level
|
previous_value2 = logging.getLogger('ccxt.base.exchange').level
|
||||||
previous_value3 = logging.getLogger('telegram').level
|
previous_value3 = logging.getLogger('telegram').level
|
||||||
|
|
||||||
set_loggers()
|
_set_loggers()
|
||||||
|
|
||||||
value1 = logging.getLogger('requests').level
|
value1 = logging.getLogger('requests').level
|
||||||
assert previous_value1 is not value1
|
assert previous_value1 is not value1
|
||||||
@ -560,13 +561,13 @@ def test_set_loggers() -> None:
|
|||||||
assert previous_value3 is not value3
|
assert previous_value3 is not value3
|
||||||
assert value3 is logging.INFO
|
assert value3 is logging.INFO
|
||||||
|
|
||||||
set_loggers(log_level=2)
|
_set_loggers(verbosity=2)
|
||||||
|
|
||||||
assert logging.getLogger('requests').level is logging.DEBUG
|
assert logging.getLogger('requests').level is logging.DEBUG
|
||||||
assert logging.getLogger('ccxt.base.exchange').level is logging.INFO
|
assert logging.getLogger('ccxt.base.exchange').level is logging.INFO
|
||||||
assert logging.getLogger('telegram').level is logging.INFO
|
assert logging.getLogger('telegram').level is logging.INFO
|
||||||
|
|
||||||
set_loggers(log_level=3)
|
_set_loggers(verbosity=3)
|
||||||
|
|
||||||
assert logging.getLogger('requests').level is logging.DEBUG
|
assert logging.getLogger('requests').level is logging.DEBUG
|
||||||
assert logging.getLogger('ccxt.base.exchange').level is logging.DEBUG
|
assert logging.getLogger('ccxt.base.exchange').level is logging.DEBUG
|
||||||
|
Loading…
Reference in New Issue
Block a user