mirror of
https://github.com/home-assistant/core.git
synced 2025-04-25 17:57:55 +00:00
Allow stream log level to change at runtime (#66153)
This commit is contained in:
parent
a4ba511276
commit
4efada7db0
@ -120,10 +120,8 @@ CONFIG_SCHEMA = vol.Schema(
|
|||||||
def filter_libav_logging() -> None:
|
def filter_libav_logging() -> None:
|
||||||
"""Filter libav logging to only log when the stream logger is at DEBUG."""
|
"""Filter libav logging to only log when the stream logger is at DEBUG."""
|
||||||
|
|
||||||
stream_debug_enabled = logging.getLogger(__name__).isEnabledFor(logging.DEBUG)
|
|
||||||
|
|
||||||
def libav_filter(record: logging.LogRecord) -> bool:
|
def libav_filter(record: logging.LogRecord) -> bool:
|
||||||
return stream_debug_enabled
|
return logging.getLogger(__name__).isEnabledFor(logging.DEBUG)
|
||||||
|
|
||||||
for logging_namespace in (
|
for logging_namespace in (
|
||||||
"libav.mp4",
|
"libav.mp4",
|
||||||
|
@ -6,6 +6,5 @@
|
|||||||
"dependencies": ["http"],
|
"dependencies": ["http"],
|
||||||
"codeowners": ["@hunterjm", "@uvjustin", "@allenporter"],
|
"codeowners": ["@hunterjm", "@uvjustin", "@allenporter"],
|
||||||
"quality_scale": "internal",
|
"quality_scale": "internal",
|
||||||
"iot_class": "local_push",
|
"iot_class": "local_push"
|
||||||
"loggers": ["av"]
|
|
||||||
}
|
}
|
||||||
|
46
tests/components/stream/test_init.py
Normal file
46
tests/components/stream/test_init.py
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
"""Test stream init."""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
import av
|
||||||
|
|
||||||
|
from homeassistant.components.stream import __name__ as stream_name
|
||||||
|
from homeassistant.setup import async_setup_component
|
||||||
|
|
||||||
|
|
||||||
|
async def test_log_levels(hass, caplog):
|
||||||
|
"""Test that the worker logs the url without username and password."""
|
||||||
|
|
||||||
|
logging.getLogger(stream_name).setLevel(logging.INFO)
|
||||||
|
|
||||||
|
await async_setup_component(hass, "stream", {"stream": {}})
|
||||||
|
|
||||||
|
# These namespaces should only pass log messages when the stream logger
|
||||||
|
# is at logging.DEBUG or below
|
||||||
|
namespaces_to_toggle = (
|
||||||
|
"mp4",
|
||||||
|
"h264",
|
||||||
|
"hevc",
|
||||||
|
"rtsp",
|
||||||
|
"tcp",
|
||||||
|
"tls",
|
||||||
|
"mpegts",
|
||||||
|
"NULL",
|
||||||
|
)
|
||||||
|
|
||||||
|
# Since logging is at INFO, these should not pass
|
||||||
|
for namespace in namespaces_to_toggle:
|
||||||
|
av.logging.log(av.logging.ERROR, namespace, "SHOULD NOT PASS")
|
||||||
|
|
||||||
|
logging.getLogger(stream_name).setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
# Since logging is now at DEBUG, these should now pass
|
||||||
|
for namespace in namespaces_to_toggle:
|
||||||
|
av.logging.log(av.logging.ERROR, namespace, "SHOULD PASS")
|
||||||
|
|
||||||
|
# Even though logging is at DEBUG, these should not pass
|
||||||
|
av.logging.log(av.logging.WARNING, "mp4", "SHOULD NOT PASS")
|
||||||
|
av.logging.log(av.logging.WARNING, "swscaler", "SHOULD NOT PASS")
|
||||||
|
|
||||||
|
assert "SHOULD PASS" in caplog.text
|
||||||
|
assert "SHOULD NOT PASS" not in caplog.text
|
Loading…
x
Reference in New Issue
Block a user