@@ -281,3 +281,45 @@ def log(
281281 resp = await client .get ("/" )
282282 assert 200 == resp .status
283283 assert "This should not be logged" not in caplog .text
284+
285+
286+ async def test_logger_does_not_log_when_enabled_post_init (
287+ aiohttp_server : AiohttpServer ,
288+ aiohttp_client : AiohttpClient ,
289+ caplog : pytest .LogCaptureFixture ,
290+ ) -> None :
291+ """Test logger does nothing when not enabled even if enabled post init."""
292+
293+ async def handler (request : web .Request ) -> web .Response :
294+ return web .Response ()
295+
296+ enabled = False
297+
298+ class Logger (AbstractAccessLogger ):
299+
300+ def log (
301+ self , request : web .BaseRequest , response : web .StreamResponse , time : float
302+ ) -> None :
303+ self .logger .critical ("This should not be logged" ) # pragma: no cover
304+
305+ @property
306+ def enabled (self ) -> bool :
307+ """Check if logger is enabled."""
308+ # Avoid formatting the log line if it will not be emitted.
309+ return enabled
310+
311+ app = web .Application ()
312+ app .router .add_get ("/" , handler )
313+ server = await aiohttp_server (app , access_log_class = Logger )
314+ client = await aiohttp_client (server )
315+ resp = await client .get ("/" )
316+ assert 200 == resp .status
317+ assert "This should not be logged" not in caplog .text
318+ assert not server .handler .connections [0 ]._force_close
319+
320+ # mock enabling logging post-init
321+ enabled = True
322+ resp = await client .get ("/" )
323+ assert 200 == resp .status
324+ assert "This should not be logged" not in caplog .text
325+ assert not server .handler .connections [0 ]._force_close
0 commit comments