diff --git a/libp2p/utils/logging.py b/libp2p/utils/logging.py index a9da0d65..b23136f5 100644 --- a/libp2p/utils/logging.py +++ b/libp2p/utils/logging.py @@ -104,7 +104,7 @@ def setup_logging() -> None: if _current_listener is not None: _current_listener.stop() _current_listener = None - + # Close and clear existing handlers for handler in _current_handlers: if isinstance(handler, logging.FileHandler): @@ -200,7 +200,7 @@ def setup_logging() -> None: # Store handlers globally for cleanup _current_handlers.extend(handlers) - + # Start the listener AFTER configuring all loggers _current_listener = logging.handlers.QueueListener( log_queue, *handlers, respect_handler_level=True @@ -219,7 +219,7 @@ def cleanup_logging() -> None: if _current_listener is not None: _current_listener.stop() _current_listener = None - + # Close all file handlers to ensure proper cleanup on Windows for handler in _current_handlers: if isinstance(handler, logging.FileHandler): diff --git a/tests/utils/test_logging.py b/tests/utils/test_logging.py index 05c76ec2..06be05c7 100644 --- a/tests/utils/test_logging.py +++ b/tests/utils/test_logging.py @@ -180,10 +180,10 @@ async def test_custom_log_file(clean_env): # Stop the listener to ensure all messages are written if _current_listener is not None: _current_listener.stop() - + # Give a moment for the listener to fully stop await trio.sleep(0.05) - + # Close all file handlers to release the file for handler in _current_handlers: if isinstance(handler, logging.FileHandler): @@ -203,12 +203,14 @@ async def test_default_log_file(clean_env): with patch("libp2p.utils.paths.create_temp_file") as mock_create_temp: # Mock the temp file creation to return a predictable path - mock_temp_file = Path(tempfile.gettempdir()) / "test_py-libp2p_20240101_120000.log" + mock_temp_file = ( + Path(tempfile.gettempdir()) / "test_py-libp2p_20240101_120000.log" + ) mock_create_temp.return_value = mock_temp_file - + # Remove the log file if it exists mock_temp_file.unlink(missing_ok=True) - + setup_logging() # Wait for the listener to be ready @@ -223,10 +225,10 @@ async def test_default_log_file(clean_env): # Stop the listener to ensure all messages are written if _current_listener is not None: _current_listener.stop() - + # Give a moment for the listener to fully stop await trio.sleep(0.05) - + # Close all file handlers to release the file for handler in _current_handlers: if isinstance(handler, logging.FileHandler): diff --git a/tests/utils/test_paths.py b/tests/utils/test_paths.py index a8eb4ed9..421fc557 100644 --- a/tests/utils/test_paths.py +++ b/tests/utils/test_paths.py @@ -220,11 +220,11 @@ class TestCrossPlatformCompatibility: def test_config_dir_platform_specific_windows(self, monkeypatch): """Test config directory respects Windows conventions.""" import platform - + # Only run this test on Windows systems if platform.system() != "Windows": pytest.skip("This test only runs on Windows systems") - + monkeypatch.setattr("os.name", "nt") monkeypatch.setenv("APPDATA", "C:\\Users\\Test\\AppData\\Roaming") config_dir = get_config_dir()