mirror of
https://github.com/bigchaindb/bigchaindb.git
synced 2024-10-13 13:34:05 +00:00
Provide log server port as config paramter
This commit is contained in:
parent
cafbb5c944
commit
0c0d3049f2
@ -97,6 +97,7 @@ config = {
|
|||||||
'fmt_console': log_config['formatters']['console']['format'],
|
'fmt_console': log_config['formatters']['console']['format'],
|
||||||
'fmt_logfile': log_config['formatters']['file']['format'],
|
'fmt_logfile': log_config['formatters']['file']['format'],
|
||||||
'granular_levels': {},
|
'granular_levels': {},
|
||||||
|
'port': log_config['root']['port']
|
||||||
},
|
},
|
||||||
'graphite': {
|
'graphite': {
|
||||||
'host': os.environ.get('BIGCHAINDB_GRAPHITE_HOST', 'localhost'),
|
'host': os.environ.get('BIGCHAINDB_GRAPHITE_HOST', 'localhost'),
|
||||||
|
@ -62,6 +62,7 @@ SUBSCRIBER_LOGGING_CONFIG = {
|
|||||||
'loggers': {},
|
'loggers': {},
|
||||||
'root': {
|
'root': {
|
||||||
'level': logging.DEBUG,
|
'level': logging.DEBUG,
|
||||||
'handlers': ['console', 'file', 'errors']
|
'handlers': ['console', 'file', 'errors'],
|
||||||
|
'port': 9020
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -22,11 +22,14 @@ class HttpServerLogger(Logger):
|
|||||||
object. *Ignored*.
|
object. *Ignored*.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
log_cfg = self.cfg.env_orig.get('custom_log_config', {})
|
||||||
|
self.log_port = log_cfg.get('port', DEFAULT_SOCKET_LOGGING_PORT)
|
||||||
|
|
||||||
self._set_socklog_handler(self.error_log)
|
self._set_socklog_handler(self.error_log)
|
||||||
self._set_socklog_handler(self.access_log)
|
self._set_socklog_handler(self.access_log)
|
||||||
|
|
||||||
def _set_socklog_handler(self, log):
|
def _set_socklog_handler(self, log):
|
||||||
socket_handler = logging.handlers.SocketHandler(
|
socket_handler = logging.handlers.SocketHandler(
|
||||||
DEFAULT_SOCKET_LOGGING_HOST, DEFAULT_SOCKET_LOGGING_PORT)
|
DEFAULT_SOCKET_LOGGING_HOST, self.log_port)
|
||||||
socket_handler._gunicorn = True
|
socket_handler._gunicorn = True
|
||||||
log.addHandler(socket_handler)
|
log.addHandler(socket_handler)
|
||||||
|
@ -25,17 +25,29 @@ def _normalize_log_level(level):
|
|||||||
raise ConfigurationError('Log level must be a string!') from exc
|
raise ConfigurationError('Log level must be a string!') from exc
|
||||||
|
|
||||||
|
|
||||||
def setup_pub_logger():
|
def setup_pub_logger(logging_port=None):
|
||||||
|
if logging_port is None:
|
||||||
|
logging_port = DEFAULT_SOCKET_LOGGING_PORT
|
||||||
|
|
||||||
dictConfig(PUBLISHER_LOGGING_CONFIG)
|
dictConfig(PUBLISHER_LOGGING_CONFIG)
|
||||||
socket_handler = logging.handlers.SocketHandler(
|
socket_handler = logging.handlers.SocketHandler(
|
||||||
DEFAULT_SOCKET_LOGGING_HOST, DEFAULT_SOCKET_LOGGING_PORT)
|
DEFAULT_SOCKET_LOGGING_HOST, logging_port)
|
||||||
socket_handler.setLevel(logging.DEBUG)
|
socket_handler.setLevel(logging.DEBUG)
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
logger.addHandler(socket_handler)
|
logger.addHandler(socket_handler)
|
||||||
|
|
||||||
|
|
||||||
def setup_sub_logger(*, user_log_config=None):
|
def setup_sub_logger(*, user_log_config=None):
|
||||||
server = LogRecordSocketServer()
|
kwargs = {}
|
||||||
|
logging_port = None
|
||||||
|
|
||||||
|
if user_log_config is not None:
|
||||||
|
logging_port = user_log_config.get('port')
|
||||||
|
|
||||||
|
if logging_port is not None:
|
||||||
|
kwargs['port'] = logging_port
|
||||||
|
|
||||||
|
server = LogRecordSocketServer(**kwargs)
|
||||||
with server:
|
with server:
|
||||||
server_proc = Process(
|
server_proc = Process(
|
||||||
target=server.serve_forever,
|
target=server.serve_forever,
|
||||||
@ -45,7 +57,8 @@ def setup_sub_logger(*, user_log_config=None):
|
|||||||
|
|
||||||
|
|
||||||
def setup_logging(*, user_log_config=None):
|
def setup_logging(*, user_log_config=None):
|
||||||
setup_pub_logger()
|
port = user_log_config.get('port') if user_log_config is not None else None
|
||||||
|
setup_pub_logger(logging_port=port)
|
||||||
setup_sub_logger(user_log_config=user_log_config)
|
setup_sub_logger(user_log_config=user_log_config)
|
||||||
|
|
||||||
|
|
||||||
|
@ -63,7 +63,8 @@ def start():
|
|||||||
election.start(events_queue=exchange.get_publisher_queue())
|
election.start(events_queue=exchange.get_publisher_queue())
|
||||||
|
|
||||||
# start the web api
|
# start the web api
|
||||||
app_server = server.create_server(bigchaindb.config['server'])
|
app_server = server.create_server(settings=bigchaindb.config['server'],
|
||||||
|
log_config=bigchaindb.config['log'])
|
||||||
p_webapi = mp.Process(name='webapi', target=app_server.run)
|
p_webapi = mp.Process(name='webapi', target=app_server.run)
|
||||||
p_webapi.start()
|
p_webapi.start()
|
||||||
|
|
||||||
|
@ -37,6 +37,11 @@ class StandaloneApplication(gunicorn.app.base.BaseApplication):
|
|||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
def load_config(self):
|
def load_config(self):
|
||||||
|
# find a better way to pass this such that
|
||||||
|
# the custom logger class can access it.
|
||||||
|
custom_log_config = self.options.get('custom_log_config')
|
||||||
|
self.cfg.env_orig['custom_log_config'] = custom_log_config
|
||||||
|
|
||||||
config = dict((key, value) for key, value in self.options.items()
|
config = dict((key, value) for key, value in self.options.items()
|
||||||
if key in self.cfg.settings and value is not None)
|
if key in self.cfg.settings and value is not None)
|
||||||
|
|
||||||
@ -74,7 +79,7 @@ def create_app(*, debug=False, threads=1):
|
|||||||
return app
|
return app
|
||||||
|
|
||||||
|
|
||||||
def create_server(settings):
|
def create_server(settings, log_config=None):
|
||||||
"""Wrap and return an application ready to be run.
|
"""Wrap and return an application ready to be run.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@ -97,6 +102,7 @@ def create_server(settings):
|
|||||||
settings['threads'] = 1
|
settings['threads'] = 1
|
||||||
|
|
||||||
settings['logger_class'] = 'bigchaindb.log.loggers.HttpServerLogger'
|
settings['logger_class'] = 'bigchaindb.log.loggers.HttpServerLogger'
|
||||||
|
settings['custom_log_config'] = log_config
|
||||||
app = create_app(debug=settings.get('debug', False),
|
app = create_app(debug=settings.get('debug', False),
|
||||||
threads=settings['threads'])
|
threads=settings['threads'])
|
||||||
standalone = StandaloneApplication(app, options=settings)
|
standalone = StandaloneApplication(app, options=settings)
|
||||||
|
@ -7,9 +7,9 @@ class TestHttpServerLogger:
|
|||||||
from bigchaindb.log.configs import (
|
from bigchaindb.log.configs import (
|
||||||
DEFAULT_SOCKET_LOGGING_ADDR as expected_socket_address)
|
DEFAULT_SOCKET_LOGGING_ADDR as expected_socket_address)
|
||||||
from bigchaindb.log.loggers import HttpServerLogger
|
from bigchaindb.log.loggers import HttpServerLogger
|
||||||
mocked_config = mocker.patch(
|
from gunicorn import config
|
||||||
'gunicorn.config.Config', autospec=True, spec_set=True)
|
logger_config = config.Config()
|
||||||
logger = HttpServerLogger(mocked_config.return_value)
|
logger = HttpServerLogger(logger_config)
|
||||||
assert len(logger.access_log.handlers) == 1
|
assert len(logger.access_log.handlers) == 1
|
||||||
assert len(logger.error_log.handlers) == 1
|
assert len(logger.error_log.handlers) == 1
|
||||||
assert isinstance(logger.access_log.handlers[0], SocketHandler)
|
assert isinstance(logger.access_log.handlers[0], SocketHandler)
|
||||||
|
@ -70,7 +70,7 @@ def log_record_bytes(log_record_dict):
|
|||||||
def test_setup_logging(mocked_setup_pub_logger, mocked_setup_sub_logger):
|
def test_setup_logging(mocked_setup_pub_logger, mocked_setup_sub_logger):
|
||||||
from bigchaindb.log.setup import setup_logging
|
from bigchaindb.log.setup import setup_logging
|
||||||
setup_logging()
|
setup_logging()
|
||||||
mocked_setup_pub_logger.assert_called_once_with()
|
mocked_setup_pub_logger.assert_called_once_with(logging_port=None)
|
||||||
mocked_setup_sub_logger.assert_called_once_with(user_log_config=None)
|
mocked_setup_sub_logger.assert_called_once_with(user_log_config=None)
|
||||||
|
|
||||||
|
|
||||||
|
@ -302,6 +302,7 @@ def test_autoconfigure_read_both_from_file_and_env(monkeypatch, request, certs_d
|
|||||||
'fmt_console': log_config['formatters']['console']['format'],
|
'fmt_console': log_config['formatters']['console']['format'],
|
||||||
'fmt_logfile': log_config['formatters']['file']['format'],
|
'fmt_logfile': log_config['formatters']['file']['format'],
|
||||||
'granular_levels': {},
|
'granular_levels': {},
|
||||||
|
'port': 9020
|
||||||
},
|
},
|
||||||
'graphite': {'host': 'localhost'},
|
'graphite': {'host': 'localhost'},
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user