Fix logger config validation (#3459)

This commit is contained in:
Paulus Schoutsen 2016-09-19 21:12:56 -07:00 committed by GitHub
parent fa2ce366de
commit 9ac39df33f
2 changed files with 10 additions and 10 deletions

View File

@ -27,14 +27,12 @@ LOGSEVERITY = {
LOGGER_DEFAULT = 'default' LOGGER_DEFAULT = 'default'
LOGGER_LOGS = 'logs' LOGGER_LOGS = 'logs'
_LOGS_SCHEMA = vol.Schema({ _VALID_LOG_LEVEL = vol.All(vol.Upper, vol.In(LOGSEVERITY))
cv.string: vol.In(vol.Lower(list(LOGSEVERITY))),
})
CONFIG_SCHEMA = vol.Schema({ CONFIG_SCHEMA = vol.Schema({
DOMAIN: vol.Schema({ DOMAIN: vol.Schema({
vol.Required(LOGGER_DEFAULT): vol.In(vol.Lower(list(LOGSEVERITY))), vol.Optional(LOGGER_DEFAULT): _VALID_LOG_LEVEL,
vol.Required(LOGGER_LOGS): _LOGS_SCHEMA, vol.Optional(LOGGER_LOGS): vol.Schema({cv.string: _VALID_LOG_LEVEL}),
}), }),
}, extra=vol.ALLOW_EXTRA) }, extra=vol.ALLOW_EXTRA)
@ -65,19 +63,19 @@ class HomeAssistantLogFilter(logging.Filter):
def setup(hass, config=None): def setup(hass, config=None):
"""Setup the logger component.""" """Setup the logger component."""
logfilter = dict() logfilter = {}
# Set default log severity # Set default log severity
logfilter[LOGGER_DEFAULT] = LOGSEVERITY['DEBUG'] logfilter[LOGGER_DEFAULT] = LOGSEVERITY['DEBUG']
if LOGGER_DEFAULT in config.get(DOMAIN): if LOGGER_DEFAULT in config.get(DOMAIN):
logfilter[LOGGER_DEFAULT] = LOGSEVERITY[ logfilter[LOGGER_DEFAULT] = LOGSEVERITY[
config.get(DOMAIN)[LOGGER_DEFAULT].upper() config.get(DOMAIN)[LOGGER_DEFAULT]
] ]
# Compute log severity for components # Compute log severity for components
if LOGGER_LOGS in config.get(DOMAIN): if LOGGER_LOGS in config.get(DOMAIN):
for key, value in config.get(DOMAIN)[LOGGER_LOGS].items(): for key, value in config.get(DOMAIN)[LOGGER_LOGS].items():
config.get(DOMAIN)[LOGGER_LOGS][key] = LOGSEVERITY[value.upper()] config.get(DOMAIN)[LOGGER_LOGS][key] = LOGSEVERITY[value]
logs = OrderedDict( logs = OrderedDict(
sorted( sorted(

View File

@ -2,7 +2,9 @@
from collections import namedtuple from collections import namedtuple
import logging import logging
import unittest import unittest
from unittest.mock import MagicMock
from homeassistant.bootstrap import setup_component
from homeassistant.components import logger from homeassistant.components import logger
RECORD = namedtuple('record', ('name', 'levelno')) RECORD = namedtuple('record', ('name', 'levelno'))
@ -22,7 +24,7 @@ class TestUpdater(unittest.TestCase):
def test_logger_setup(self): def test_logger_setup(self):
"""Use logger to create a logging filter.""" """Use logger to create a logging filter."""
logger.setup(None, self.log_config) setup_component(MagicMock(), logger.DOMAIN, self.log_config)
self.assertTrue(len(logging.root.handlers) > 0) self.assertTrue(len(logging.root.handlers) > 0)
handler = logging.root.handlers[-1] handler = logging.root.handlers[-1]
@ -35,7 +37,7 @@ class TestUpdater(unittest.TestCase):
def test_logger_test_filters(self): def test_logger_test_filters(self):
"""Test resulting filter operation.""" """Test resulting filter operation."""
logger.setup(None, self.log_config) setup_component(MagicMock(), logger.DOMAIN, self.log_config)
log_filter = logging.root.handlers[-1].filters[0] log_filter = logging.root.handlers[-1].filters[0]