2828stream_handler .setFormatter (stream_formatter )
2929logger .addHandler (stream_handler )
3030
31- # Configure the file handler
32- log_file_path = os .getenv ("APP_LOG_FILE" , "app.log" )
33- file_handler = logging .FileHandler (log_file_path )
34- file_handler .setLevel (logging .INFO )
35- file_formatter = logging .Formatter ("%(asctime)s [%(levelname)s] %(name)s: %(message)s" )
36- file_handler .setFormatter (file_formatter )
37- logger .addHandler (file_handler )
38-
31+ # Configure logging to file, if log file name is provided
32+ log_file_name = os .getenv ("APP_LOG_FILE" )
33+ if log_file_name is not None :
34+ file_handler = logging .FileHandler (log_file_name )
35+ file_handler .setLevel (logging .INFO )
36+ file_formatter = logging .Formatter ("%(asctime)s [%(levelname)s] %(name)s: %(message)s" )
37+ file_handler .setFormatter (file_formatter )
38+ logger .addHandler (file_handler )
39+
40+ enable_trace_string = os .getenv ("ENABLE_AZURE_MONITOR_TRACING" )
41+ enable_trace = False
42+ if enable_trace_string is None :
43+ enable_trace = False
44+ else :
45+ enable_trace = str (enable_trace_string ).lower () == "true"
46+ if enable_trace :
47+ logger .info ("Tracing is enabled." )
48+ try :
49+ from azure .monitor .opentelemetry import configure_azure_monitor
50+ except ModuleNotFoundError :
51+ logger .error ("Required libraries for tracing not installed." )
52+ logger .error ("Please make sure azure-monitor-opentelemetry is installed." )
53+ exit ()
54+ else :
55+ logger .info ("Tracing is not enabled" )
3956
4057@contextlib .asynccontextmanager
4158async def lifespan (app : fastapi .FastAPI ):
@@ -54,6 +71,20 @@ async def lifespan(app: fastapi.FastAPI):
5471 )
5572 logger .info ("Created AIProjectClient" )
5673
74+ if enable_trace :
75+ application_insights_connection_string = ""
76+ try :
77+ application_insights_connection_string = await ai_client .telemetry .get_connection_string ()
78+ except Exception as e :
79+ e_string = str (e )
80+ logger .error ("Failed to get Application Insights connection string, error: %s" , e_string )
81+ if not application_insights_connection_string :
82+ logger .error ("Application Insights was not enabled for this project." )
83+ logger .error ("Enable it via the 'Tracing' tab in your AI Foundry project page." )
84+ exit ()
85+ else :
86+ configure_azure_monitor (connection_string = application_insights_connection_string )
87+
5788 file_names = ["product_info_1.md" , "product_info_2.md" ] #TODO: can we get the file names from the folder so customers can upload?
5889 for file_name in file_names :
5990 file_path = os .path .abspath (os .path .join (os .path .dirname (__file__ ), '..' , 'files' , file_name ))
0 commit comments