Skip to content

Commit 17974f8

Browse files
author
Marko Hietala
committed
tracing and file logging related updates
1 parent f9c59e8 commit 17974f8

File tree

1 file changed

+33
-28
lines changed

1 file changed

+33
-28
lines changed

src/api/main.py

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -29,41 +29,13 @@
2929
stream_handler.setFormatter(stream_formatter)
3030
logger.addHandler(stream_handler)
3131

32-
# Configure logging to file, if log file name is provided
33-
log_file_name = os.getenv("APP_LOG_FILE", "")
34-
if log_file_name != "":
35-
file_handler = logging.FileHandler(log_file_name)
36-
file_handler.setLevel(logging.INFO)
37-
file_formatter = logging.Formatter("%(asctime)s [%(levelname)s] %(name)s: %(message)s")
38-
file_handler.setFormatter(file_formatter)
39-
logger.addHandler(file_handler)
40-
41-
enable_trace_string = os.getenv("ENABLE_AZURE_MONITOR_TRACING", "")
4232
enable_trace = False
43-
if enable_trace_string != "":
44-
enable_trace = False
45-
else:
46-
enable_trace = str(enable_trace_string).lower() == "true"
47-
if enable_trace:
48-
logger.info("Tracing is enabled.")
49-
try:
50-
from azure.monitor.opentelemetry import configure_azure_monitor
51-
except ModuleNotFoundError:
52-
logger.error("Required libraries for tracing not installed.")
53-
logger.error("Please make sure azure-monitor-opentelemetry is installed.")
54-
exit()
55-
else:
56-
logger.info("Tracing is not enabled")
5733

5834
@contextlib.asynccontextmanager
5935
async def lifespan(app: fastapi.FastAPI):
6036
agent = None
6137

6238
try:
63-
if not os.getenv("RUNNING_IN_PRODUCTION"):
64-
logger.info("Loading .env file")
65-
load_dotenv(override=True)
66-
6739
ai_client = AIProjectClient.from_connection_string(
6840
credential=DefaultAzureCredential(exclude_shared_token_cache_credential=True),
6941
conn_str=os.environ["AZURE_AIPROJECT_CONNECTION_STRING"],
@@ -82,7 +54,10 @@ async def lifespan(app: fastapi.FastAPI):
8254
logger.error("Enable it via the 'Tracing' tab in your AI Foundry project page.")
8355
exit()
8456
else:
57+
from azure.monitor.opentelemetry import configure_azure_monitor
8558
configure_azure_monitor(connection_string=application_insights_connection_string)
59+
# Do not instrument the code yet, before trace fix is available.
60+
#ai_client.telemetry.enable()
8661

8762
if os.environ.get("AZURE_AI_AGENT_ID") is not None:
8863
try:
@@ -125,6 +100,36 @@ async def lifespan(app: fastapi.FastAPI):
125100

126101

127102
def create_app():
103+
if not os.getenv("RUNNING_IN_PRODUCTION"):
104+
load_dotenv(override=True)
105+
106+
# Configure logging to file, if log file name is provided
107+
log_file_name = os.getenv("APP_LOG_FILE", "")
108+
if log_file_name != "":
109+
file_handler = logging.FileHandler(log_file_name)
110+
file_handler.setLevel(logging.INFO)
111+
file_formatter = logging.Formatter("%(asctime)s [%(levelname)s] %(name)s: %(message)s")
112+
file_handler.setFormatter(file_formatter)
113+
logger.addHandler(file_handler)
114+
115+
enable_trace_string = os.getenv("ENABLE_AZURE_MONITOR_TRACING", "")
116+
global enable_trace
117+
enable_trace = False
118+
if enable_trace_string == "":
119+
enable_trace = False
120+
else:
121+
enable_trace = str(enable_trace_string).lower() == "true"
122+
if enable_trace:
123+
logger.info("Tracing is enabled.")
124+
try:
125+
from azure.monitor.opentelemetry import configure_azure_monitor
126+
except ModuleNotFoundError:
127+
logger.error("Required libraries for tracing not installed.")
128+
logger.error("Please make sure azure-monitor-opentelemetry is installed.")
129+
exit()
130+
else:
131+
logger.info("Tracing is not enabled")
132+
128133
directory = os.path.join(os.path.dirname(__file__), "static")
129134
app = fastapi.FastAPI(lifespan=lifespan)
130135
app.mount("/static", StaticFiles(directory=directory), name="static")

0 commit comments

Comments
 (0)