11import asyncio
22import logging
33import os
4+ import re
45from io import StringIO
56
67import pytest
1314 trace_id_ctx ,
1415 tracer ,
1516)
16- from chromatrace .logging_settings import IgnoreNANTraceFormatter
17+ from chromatrace .logging_settings import ApplicationLevelFilter , BasicFormatter
1718from chromatrace .tracer import RequestIdFilter
1819from fastapi import FastAPI
1920from fastapi .testclient import TestClient
@@ -104,33 +105,38 @@ async def test_async_tracer(self):
104105
105106class TestFormatters :
106107 @pytest .fixture (scope = "class" )
107- def settings (self ):
108- return LoggingSettings (
109- application_level = "TestFormatters" ,
110- enable_console_logging = True ,
111- enable_tracing = True ,
112- ignore_nan_trace = True ,
108+ def config (self ):
109+ return LoggingConfig (
110+ LoggingSettings (
111+ application_level = "TestFormatters" ,
112+ enable_console_logging = False ,
113+ enable_tracing = True ,
114+ ignore_nan_trace = True ,
115+ )
113116 )
114117
115118 @pytest .fixture
116119 def stream (self ):
117120 return StringIO ()
118121
119122 @pytest .fixture
120- def logger (self , settings , stream ):
123+ def logger (self , config , stream ):
121124 # Clear all existing loggers
122- config = LoggingConfig (settings )
123125 logger = config .get_logger ("formatter-test" )
124126
125127 # Add StreamHandler directly to logger
126128 handler = logging .StreamHandler (stream )
127129 handler .setFormatter (
128- IgnoreNANTraceFormatter (
129- fmt = settings .log_format ,
130- datefmt = settings .date_format ,
131- style = settings .style ,
130+ BasicFormatter (
131+ fmt = config .settings .log_format ,
132+ datefmt = config .settings .date_format ,
133+ style = config .settings .style ,
134+ colored = True ,
135+ remove_nan_trace = True ,
132136 )
133137 )
138+ handler .addFilter (RequestIdFilter ())
139+ handler .addFilter (ApplicationLevelFilter (config .settings .application_level ))
134140 logger .addHandler (handler )
135141 return logger
136142
@@ -144,10 +150,10 @@ def test_colored_output(self, logger, stream):
144150 assert "test-id" in output
145151
146152 def test_ignore_nan_trace (self , logger , stream ):
153+ trace_id_ctx .set ("NAN" )
147154 logger .info ("Test message with no trace..." )
148- assert "NAN" not in logger .handlers [0 ].format (
149- logging .LogRecord ("" , 0 , "" , 0 , "msg" , (), None )
150- )
155+ output = stream .getvalue ()
156+ assert "NAN" not in output , "NAN trace should be removed"
151157
152158
153159class TestContextManagement :
0 commit comments