28
28
stream_handler .setFormatter (stream_formatter )
29
29
logger .addHandler (stream_handler )
30
30
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" )
39
56
40
57
@contextlib .asynccontextmanager
41
58
async def lifespan (app : fastapi .FastAPI ):
@@ -54,6 +71,20 @@ async def lifespan(app: fastapi.FastAPI):
54
71
)
55
72
logger .info ("Created AIProjectClient" )
56
73
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
+
57
88
file_names = ["product_info_1.md" , "product_info_2.md" ] #TODO: can we get the file names from the folder so customers can upload?
58
89
for file_name in file_names :
59
90
file_path = os .path .abspath (os .path .join (os .path .dirname (__file__ ), '..' , 'files' , file_name ))
0 commit comments