Skip to content

Commit 301fab7

Browse files
Merge pull request #59 from microsoft/PSL-US-26761
feat: Implementation of Configurable Logging Control via Flag
2 parents 39633f3 + b6b1b9e commit 301fab7

12 files changed

Lines changed: 113 additions & 27 deletions

File tree

infra/main.bicep

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -856,6 +856,14 @@ module appConfiguration 'br/public:avm/res/app-configuration/configuration-store
856856
name: 'APP_LOGGING_LEVEL'
857857
value: 'INFO'
858858
}
859+
{
860+
name: 'AZURE_PACKAGE_LOGGING_LEVEL'
861+
value: 'INFO'
862+
}
863+
{
864+
name: 'AZURE_LOGGING_PACKAGES'
865+
value: ''
866+
}
859867
{
860868
name: 'AZURE_AI_AGENT_MODEL_DEPLOYMENT_NAME'
861869
value: ''

infra/main_custom.bicep

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -859,6 +859,14 @@ module appConfiguration 'br/public:avm/res/app-configuration/configuration-store
859859
name: 'APP_LOGGING_LEVEL'
860860
value: 'INFO'
861861
}
862+
{
863+
name: 'AZURE_PACKAGE_LOGGING_LEVEL'
864+
value: 'INFO'
865+
}
866+
{
867+
name: 'AZURE_LOGGING_PACKAGES'
868+
value: ''
869+
}
862870
{
863871
name: 'AZURE_AI_AGENT_MODEL_DEPLOYMENT_NAME'
864872
value: ''

src/backend-api/src/app/.env.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,7 @@ APP_CONFIGURATION_URL=""
33
# APP_LOGGING_ENABLE=true
44
# APP_LOGGING_LEVEL="INFO"
55

6+
# Azure Logging Configuration
7+
# AZURE_PACKAGE_LOGGING_LEVEL="WARNING" # Options: DEBUG, INFO, WARNING, ERROR, CRITICAL
8+
# AZURE_LOGGING_PACKAGES="azure.core.pipeline.policies.http_logging_policy,azure.storage.blob,azure.storage.queue,azure.core,azure.identity,azure.storage,azure.core.pipeline,azure.core.pipeline.policies,azure.core.pipeline.transport,openai,openai._client,httpx,httpcore,semantic_kernel,urllib3,msal"
9+

src/backend-api/src/app/libs/application/application_configuration.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ class Configuration(_configuration_base, KernelBaseSettings):
3333
app_logging_level: str = Field(default="INFO")
3434
app_sample_variable: str = Field(default="Hello World!")
3535

36+
# Azure logging configuration
37+
azure_package_logging_level: str = Field(default="WARNING", alias="AZURE_PACKAGE_LOGGING_LEVEL")
38+
azure_logging_packages: str | None = Field(default=None, alias="AZURE_LOGGING_PACKAGES")
39+
3640
global_llm_service: str | None = "AzureOpenAI"
3741
cosmos_db_process_log_container: str | None = Field(
3842
default=None, env="COSMOS_DB_PROCESS_LOG_CONTAINER"

src/backend-api/src/app/libs/base/application_base.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ def __init__(self, env_file_path: str | None = None, **data):
6060
)
6161
logging.basicConfig(level=logging_level)
6262

63+
# Configure Azure package logging levels only if packages are specified
64+
if self.application_context.configuration.azure_logging_packages:
65+
azure_level = getattr(logging, self.application_context.configuration.azure_package_logging_level.upper(), logging.WARNING)
66+
for logger_name in filter(None, (pkg.strip() for pkg in self.application_context.configuration.azure_logging_packages.split(','))):
67+
logging.getLogger(logger_name).setLevel(azure_level)
68+
6369
# Initialize the application
6470
self.initialize()
6571

src/backend-api/src/app/routers/router_debug.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ async def get_config_debug(request: Request):
1919
config_dict = {
2020
"app_logging_enable": config.app_logging_enable,
2121
"app_logging_level": config.app_logging_level,
22+
"azure_package_logging_level": config.azure_package_logging_level,
23+
"azure_logging_packages": config.azure_logging_packages,
2224
"cosmos_db_account_url": config.cosmos_db_account_url,
2325
"cosmos_db_database_name": config.cosmos_db_database_name,
2426
"cosmos_db_process_container": config.cosmos_db_process_container,

src/backend-api/src/tests/application/test_app_configuration.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@ def test_configuration_fields():
2828
assert isinstance(config.app_logging_enable, bool)
2929
assert config.app_logging_enable is True
3030

31+
assert hasattr(config, "azure_package_logging_level")
32+
assert isinstance(config.azure_package_logging_level, str)
33+
assert config.azure_package_logging_level == "INFO"
34+
35+
assert hasattr(config, "azure_logging_packages")
36+
assert isinstance(config.azure_logging_packages, list)
37+
assert config.azure_logging_packages == []
38+
3139
assert hasattr(config, "app_logging_level")
3240
assert isinstance(config.app_logging_level, str)
3341
assert config.app_logging_level == "INFO"

src/backend-api/test_config.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ def test_configuration():
2020
config_values = {
2121
"app_logging_enable": config.app_logging_enable,
2222
"app_logging_level": config.app_logging_level,
23+
"azure_package_logging_level": config.azure_package_logging_level,
24+
"azure_logging_packages": config.azure_logging_packages,
2325
"cosmos_db_account_url": config.cosmos_db_account_url,
2426
"cosmos_db_database_name": config.cosmos_db_database_name,
2527
"cosmos_db_process_container": config.cosmos_db_process_container,

src/processor/.env.example

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
APP_CONFIGURATION_URL=""
2+
3+
# Application Logging Configuration
4+
# APP_LOGGING_ENABLE=true
5+
# APP_LOGGING_LEVEL="INFO"
6+
7+
# Azure Logging Configuration
8+
# AZURE_PACKAGE_LOGGING_LEVEL="WARNING" # Options: DEBUG, INFO, WARNING, ERROR, CRITICAL
9+
# AZURE_LOGGING_PACKAGES="azure.core.pipeline.policies.http_logging_policy,azure.storage.blob,azure.storage.queue,azure.core,azure.identity,azure.storage,azure.core.pipeline,azure.core.pipeline.policies,azure.core.pipeline.transport,openai,openai._client,httpx,httpcore,semantic_kernel,urllib3,msal"
10+
11+
# Database Configuration
12+
# COSMOS_DB_ACCOUNT_URL="http://<cosmos url>"
13+
# COSMOS_DB_DATABASE_NAME="<database name>"
14+
# COSMOS_DB_CONTAINER_NAME="<container name>"
15+
16+
# Storage Configuration
17+
# STORAGE_QUEUE_ACCOUNT="http://<storage queue url>"
18+
# STORAGE_ACCOUNT_PROCESS_QUEUE="http://<storage account process queue url>"
19+
# STORAGE_QUEUE_NAME="processes-queue"

src/processor/src/libs/application/application_configuration.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ class Configuration(_configuration_base):
2929
# api_key: str
3030
app_logging_enable: bool = Field(default=False, alias="APP_LOGGING_ENABLE")
3131
app_logging_level: str = Field(default="INFO", alias="APP_LOGGING_LEVEL")
32+
33+
# Azure logging configuration
34+
azure_package_logging_level: str = Field(default="WARNING", alias="AZURE_PACKAGE_LOGGING_LEVEL")
35+
azure_logging_packages: str | None = Field(default=None, alias="AZURE_LOGGING_PACKAGES")
3236
cosmos_db_account_url: str = Field(
3337
default="http://<cosmos url>", alias="COSMOS_DB_ACCOUNT_URL"
3438
)

0 commit comments

Comments
 (0)