@@ -32,9 +32,10 @@ def test_buffering_handler_init_stores_dependencies():
3232
3333def test_buffering_handler_emit_calls_add_log_record_to_buffer (monkeypatch ):
3434 # GIVEN a real Logger with buffer and a BufferingHandler (tracer id set so records are buffered)
35+ # Using buffer_at_verbosity="WARNING" so INFO logs are buffered (below threshold)
3536 monkeypatch .setenv (constants .XRAY_TRACE_ID_ENV , "1-67c39786-5908a82a246fb67f3089263f" )
3637 stream = io .StringIO ()
37- buffer_config = LoggerBufferConfig (max_bytes = 10240 )
38+ buffer_config = LoggerBufferConfig (max_bytes = 10240 , buffer_at_verbosity = "WARNING" )
3839 source_logger = Logger (service = "test2" , buffer_config = buffer_config , stream = stream )
3940 handler = BufferingHandler (
4041 buffer_cache = source_logger ._buffer_cache ,
@@ -55,9 +56,44 @@ def test_buffering_handler_emit_calls_add_log_record_to_buffer(monkeypatch):
5556
5657 # WHEN the handler emits the record and the buffer is flushed
5758 handler .emit (record )
58- source_logger .flush_buffer ()
5959
60- # THEN the buffered message appears in the logger output
60+ # THEN the message is NOT in output yet (it's buffered)
61+ assert "test arg" not in stream .getvalue ()
62+
63+ # AND when buffer is flushed, the buffered message appears in the logger output
64+ source_logger .flush_buffer ()
6165 output = stream .getvalue ()
6266 log_line = json .loads (output .strip ())
6367 assert log_line ["message" ] == "test arg"
68+
69+
70+ def test_buffering_handler_emit_above_threshold_emits_directly (monkeypatch ):
71+ # GIVEN a real Logger with buffer_at_verbosity="DEBUG" (default)
72+ # INFO logs should be emitted directly since INFO > DEBUG
73+ monkeypatch .setenv (constants .XRAY_TRACE_ID_ENV , "1-67c39786-5908a82a246fb67f3089263f" )
74+ stream = io .StringIO ()
75+ buffer_config = LoggerBufferConfig (max_bytes = 10240 , buffer_at_verbosity = "DEBUG" )
76+ source_logger = Logger (service = "test3" , buffer_config = buffer_config , stream = stream )
77+ handler = BufferingHandler (
78+ buffer_cache = source_logger ._buffer_cache ,
79+ buffer_config = source_logger ._buffer_config ,
80+ source_logger = source_logger ,
81+ )
82+ record = logging .LogRecord (
83+ name = "external" ,
84+ level = logging .INFO ,
85+ pathname = "" ,
86+ lineno = 0 ,
87+ msg = "direct message" ,
88+ args = (),
89+ exc_info = None ,
90+ func = None ,
91+ )
92+ record .stack_info = None
93+
94+ # WHEN the handler emits the record
95+ handler .emit (record )
96+
97+ # THEN the message appears immediately (not buffered)
98+ output = stream .getvalue ()
99+ assert "direct message" in output
0 commit comments