diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index f1136123999..66312f7283a 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -342,7 +342,11 @@ def async_enable_logging( err_log_path, backupCount=1 ) - err_handler.doRollover() + try: + err_handler.doRollover() + except OSError as err: + _LOGGER.error("Error rolling over log file: %s", err) + err_handler.setLevel(logging.INFO if verbose else logging.WARNING) err_handler.setFormatter(logging.Formatter(fmt, datefmt=datefmt)) diff --git a/tests/test_bootstrap.py b/tests/test_bootstrap.py index 929cbbf6e81..3eeb06d056c 100644 --- a/tests/test_bootstrap.py +++ b/tests/test_bootstrap.py @@ -56,11 +56,14 @@ async def test_home_assistant_core_config_validation(hass): assert result is None -async def test_async_enable_logging(hass): +async def test_async_enable_logging(hass, caplog): """Test to ensure logging is migrated to the queue handlers.""" with patch("logging.getLogger"), patch( "homeassistant.bootstrap.async_activate_log_queue_handler" - ) as mock_async_activate_log_queue_handler: + ) as mock_async_activate_log_queue_handler, patch( + "homeassistant.bootstrap.logging.handlers.RotatingFileHandler.doRollover", + side_effect=OSError, + ): bootstrap.async_enable_logging(hass) mock_async_activate_log_queue_handler.assert_called_once() mock_async_activate_log_queue_handler.reset_mock() @@ -75,6 +78,8 @@ async def test_async_enable_logging(hass): for f in glob.glob("testing_config/home-assistant.log*"): os.remove(f) + assert "Error rolling over log file" in caplog.text + async def test_load_hassio(hass): """Test that we load Hass.io component."""