diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index 45c04651461..2e3b5522c3f 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -332,15 +332,17 @@ def async_enable_logging( not err_path_exists and os.access(err_dir, os.W_OK) ): + err_handler: logging.FileHandler if log_rotate_days: - err_handler: logging.FileHandler = ( - logging.handlers.TimedRotatingFileHandler( - err_log_path, when="midnight", backupCount=log_rotate_days - ) + err_handler = logging.handlers.TimedRotatingFileHandler( + err_log_path, when="midnight", backupCount=log_rotate_days ) else: - err_handler = logging.FileHandler(err_log_path, mode="w", delay=True) + err_handler = logging.handlers.RotatingFileHandler( + err_log_path, backupCount=1 + ) + err_handler.rotate(err_log_path, f"{err_log_path[:-4]}.previous.log") 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 1fecf7be96b..2bdbab11c32 100644 --- a/tests/test_bootstrap.py +++ b/tests/test_bootstrap.py @@ -62,6 +62,13 @@ async def test_async_enable_logging(hass): ) as mock_async_activate_log_queue_handler: bootstrap.async_enable_logging(hass) mock_async_activate_log_queue_handler.assert_called_once() + mock_async_activate_log_queue_handler.reset_mock() + bootstrap.async_enable_logging( + hass, + log_rotate_days=5, + log_file="test.log", + ) + mock_async_activate_log_queue_handler.assert_called_once() async def test_load_hassio(hass):