WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit 1b487a4

Browse files
feat: Implementation of Configurable Logging Control via Flag (#1966)
1 parent 578555a commit 1b487a4

File tree

7 files changed

+222
-162
lines changed

7 files changed

+222
-162
lines changed

.env.sample

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ AZURE_OPENAI_STREAM=True
3838
# Backend for processing the documents and application logging in the app
3939
AzureWebJobsStorage=
4040
BACKEND_URL=http://localhost:7071
41+
42+
# Enhanced logging configuration (optional)
43+
LOGLEVEL=INFO
44+
PACKAGE_LOGGING_LEVEL=WARNING
45+
# AZURE_LOGGING_PACKAGES=azure.core,azure.identity
4146
DOCUMENT_PROCESSING_QUEUE_NAME=
4247
AZURE_BLOB_ACCOUNT_NAME=
4348
AZURE_BLOB_ACCOUNT_KEY=

code/app.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,25 @@
88
from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor
99

1010
logging.captureWarnings(True)
11-
logging.basicConfig(level=os.environ.get("LOGLEVEL", "INFO").upper())
12-
# Raising the azure log level to WARN as it is too verbose -
13-
# https://github.com/Azure/azure-sdk-for-python/issues/9422
14-
logging.getLogger("azure").setLevel(os.environ.get("LOGLEVEL_AZURE", "WARN").upper())
11+
12+
# Logging configuration from environment variables
13+
AZURE_BASIC_LOGGING_LEVEL = os.environ.get("LOGLEVEL", "INFO")
14+
PACKAGE_LOGGING_LEVEL = os.environ.get("PACKAGE_LOGGING_LEVEL", "WARNING")
15+
AZURE_LOGGING_PACKAGES = os.environ.get("AZURE_LOGGING_PACKAGES", "")
16+
AZURE_LOGGING_PACKAGES = [pkg.strip() for pkg in AZURE_LOGGING_PACKAGES if pkg.strip()]
17+
18+
# Configure logging levels from environment variables
19+
logging.basicConfig(
20+
level=getattr(logging, AZURE_BASIC_LOGGING_LEVEL.upper(), logging.INFO)
21+
)
22+
23+
# Configure Azure package logging levels
24+
azure_package_log_level = getattr(
25+
logging, PACKAGE_LOGGING_LEVEL.upper(), logging.WARNING
26+
)
27+
for logger_name in AZURE_LOGGING_PACKAGES:
28+
logging.getLogger(logger_name).setLevel(azure_package_log_level)
29+
1530
# We cannot use EnvHelper here as Application Insights should be configured first
1631
# for instrumentation to work correctly
1732
if os.getenv("APPLICATIONINSIGHTS_ENABLED", "false").lower() == "true":

code/backend/Admin.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,25 @@
1111
sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
1212

1313
logging.captureWarnings(True)
14-
logging.basicConfig(level=os.getenv("LOGLEVEL", "INFO").upper())
15-
# Raising the azure log level to WARN as it is too verbose
16-
# https://github.com/Azure/azure-sdk-for-python/issues/9422
17-
logging.getLogger("azure").setLevel(os.environ.get("LOGLEVEL_AZURE", "WARN").upper())
14+
15+
# Logging configuration from environment variables
16+
AZURE_BASIC_LOGGING_LEVEL = os.environ.get("LOGLEVEL", "INFO")
17+
PACKAGE_LOGGING_LEVEL = os.environ.get("PACKAGE_LOGGING_LEVEL", "WARNING")
18+
AZURE_LOGGING_PACKAGES = os.environ.get("AZURE_LOGGING_PACKAGES", "")
19+
AZURE_LOGGING_PACKAGES = [pkg.strip() for pkg in AZURE_LOGGING_PACKAGES if pkg.strip()]
20+
21+
# Configure logging levels from environment variables
22+
logging.basicConfig(
23+
level=getattr(logging, AZURE_BASIC_LOGGING_LEVEL.upper(), logging.INFO)
24+
)
25+
26+
# Configure Azure package logging levels
27+
azure_package_log_level = getattr(
28+
logging, PACKAGE_LOGGING_LEVEL.upper(), logging.WARNING
29+
)
30+
for logger_name in AZURE_LOGGING_PACKAGES:
31+
logging.getLogger(logger_name).setLevel(azure_package_log_level)
32+
1833
# We cannot use EnvHelper here as Application Insights needs to be configured first
1934
# for instrumentation to work correctly
2035
if os.getenv("APPLICATIONINSIGHTS_ENABLED", "false").lower() == "true":

code/backend/batch/function_app.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,25 @@
99
from azure.monitor.opentelemetry import configure_azure_monitor
1010

1111
logging.captureWarnings(True)
12-
# Raising the azure log level to WARN as it is too verbose - https://github.com/Azure/azure-sdk-for-python/issues/9422
13-
logging.getLogger("azure").setLevel(os.environ.get("LOGLEVEL_AZURE", "WARN").upper())
12+
13+
# Logging configuration from environment variables
14+
AZURE_BASIC_LOGGING_LEVEL = os.environ.get("LOGLEVEL", "INFO")
15+
PACKAGE_LOGGING_LEVEL = os.environ.get("PACKAGE_LOGGING_LEVEL", "WARNING")
16+
AZURE_LOGGING_PACKAGES = os.environ.get("AZURE_LOGGING_PACKAGES", "")
17+
AZURE_LOGGING_PACKAGES = [pkg.strip() for pkg in AZURE_LOGGING_PACKAGES if pkg.strip()]
18+
19+
# Configure logging levels from environment variables
20+
logging.basicConfig(
21+
level=getattr(logging, AZURE_BASIC_LOGGING_LEVEL.upper(), logging.INFO)
22+
)
23+
24+
# Configure Azure package logging levels
25+
azure_package_log_level = getattr(
26+
logging, PACKAGE_LOGGING_LEVEL.upper(), logging.WARNING
27+
)
28+
for logger_name in AZURE_LOGGING_PACKAGES:
29+
logging.getLogger(logger_name).setLevel(azure_package_log_level)
30+
1431
if os.getenv("APPLICATIONINSIGHTS_ENABLED", "false").lower() == "true":
1532
configure_azure_monitor()
1633

docs/LOCAL_DEPLOYMENT.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,8 @@ Execute the above [shell command](#L81) to run the function locally. You may nee
298298
|DOCUMENT_PROCESSING_QUEUE_NAME|doc-processing|The name of the Azure Queue to handle the Batch processing|
299299
|FUNCTION_KEY | | The function key for accessing the backend Azure Function|
300300
|LOGLEVEL | INFO | The log level for application logging (CRITICAL, ERROR, WARN, INFO, DEBUG)|
301+
|PACKAGE_LOGGING_LEVEL | WARNING | Enhanced: Azure SDK package logging level (CRITICAL, ERROR, WARN, INFO, DEBUG)|
302+
|AZURE_LOGGING_PACKAGES | (optional) | Enhanced: Comma-separated list of Azure logger packages to configure. If not provided, no Azure SDK logging is configured.|
301303
|MANAGED_IDENTITY_CLIENT_ID | | The client ID of the user-assigned managed identity|
302304
|MANAGED_IDENTITY_RESOURCE_ID | | The resource ID of the user-assigned managed identity|
303305
|OPEN_AI_FUNCTIONS_SYSTEM_PROMPT | | System prompt for OpenAI functions orchestration|

infra/main.bicep

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,6 +1276,8 @@ module web 'modules/app/web.bicep' = {
12761276
ORCHESTRATION_STRATEGY: orchestrationStrategy
12771277
CONVERSATION_FLOW: conversationFlow
12781278
LOGLEVEL: logLevel
1279+
PACKAGE_LOGGING_LEVEL: 'WARNING'
1280+
AZURE_LOGGING_PACKAGES: ''
12791281
DATABASE_TYPE: databaseType
12801282
OPEN_AI_FUNCTIONS_SYSTEM_PROMPT: openAIFunctionsSystemPrompt
12811283
SEMANTIC_KERNEL_SYSTEM_PROMPT: semanticKernelSystemPrompt
@@ -1374,6 +1376,8 @@ module adminweb 'modules/app/adminweb.bicep' = {
13741376
ORCHESTRATION_STRATEGY: orchestrationStrategy
13751377
CONVERSATION_FLOW: conversationFlow
13761378
LOGLEVEL: logLevel
1379+
PACKAGE_LOGGING_LEVEL: 'WARNING'
1380+
AZURE_LOGGING_PACKAGES: ''
13771381
DATABASE_TYPE: databaseType
13781382
USE_KEY_VAULT: 'true'
13791383
MANAGED_IDENTITY_CLIENT_ID: managedIdentityModule.outputs.clientId
@@ -1469,6 +1473,8 @@ module function 'modules/app/function.bicep' = {
14691473
DOCUMENT_PROCESSING_QUEUE_NAME: queueName
14701474
ORCHESTRATION_STRATEGY: orchestrationStrategy
14711475
LOGLEVEL: logLevel
1476+
PACKAGE_LOGGING_LEVEL: 'WARNING'
1477+
AZURE_LOGGING_PACKAGES: ''
14721478
AZURE_OPENAI_SYSTEM_MESSAGE: azureOpenAISystemMessage
14731479
DATABASE_TYPE: databaseType
14741480
MANAGED_IDENTITY_CLIENT_ID: managedIdentityModule.outputs.clientId

0 commit comments

Comments
 (0)