diff --git a/jwtproxy/requirements.txt b/jwtproxy/requirements.txt index e4c005d0..676054cf 100644 --- a/jwtproxy/requirements.txt +++ b/jwtproxy/requirements.txt @@ -2,15 +2,13 @@ aiohttp==3.13.4 aiosignal==1.4.0 async-timeout==4.0.2 attrs==25.4.0 +azure-monitor-opentelemetry==1.8.7 cffi>=2.0.0 charset-normalizer==3.4.6 cryptography==46.0.7 -Deprecated==1.3.1 frozenlist==1.8.0 idna==3.11 jwcrypto==1.5.6 multidict==6.7.1 pycparser==3.0 -wrapt==2.1.2 yarl===1.23.0 -opencensus-ext-azure==1.1.15 diff --git a/jwtproxy/requirements_dev.txt b/jwtproxy/requirements_dev.txt index 169449ad..ec57338f 100644 --- a/jwtproxy/requirements_dev.txt +++ b/jwtproxy/requirements_dev.txt @@ -16,5 +16,4 @@ ruff==0.15.6 six==1.17.0 sniffio==1.3.1 watchgod==0.8.2 -wrapt==2.1.2 yarl==1.23.0 diff --git a/jwtproxy/src/server.py b/jwtproxy/src/server.py index 49073845..f3cac150 100755 --- a/jwtproxy/src/server.py +++ b/jwtproxy/src/server.py @@ -30,6 +30,7 @@ log_fmt = base_log_fmt.copy() audit_log_fmt = {"audit": True} audit_log_fmt.update(log_fmt) + log_cfg = { "version": 1, "disable_existing_loggers": False, @@ -43,18 +44,6 @@ "formatter": "json", "level": LOG_LEVEL, }, - "appinsights": { - "class": "opencensus.ext.azure.log_exporter.AzureLogHandler", - "connection_string": AZURE_APPLICATIONINSIGHTS_CONNSTRING, - "formatter": "json-audit", - "level": "DEBUG", - }, - "appinsightsaccess": { - "class": "opencensus.ext.azure.log_exporter.AzureLogHandler", - "connection_string": AZURE_APPLICATIONINSIGHTS_CONNSTRING, - "formatter": "json", - "level": "DEBUG", - }, }, "loggers": { "jwtproxy.applogs": { @@ -64,26 +53,42 @@ }, "jwtproxy.auditlogs": { "propagate": False, - "handlers": ["appinsights"], + "handlers": ["console"], # changed below if Azure Connection string is set "level": "DEBUG", # Send everything }, "jwtproxy.accesslogs": { "propagate": False, - "handlers": ["appinsightsaccess"], + "handlers": ["console"], # changed below if Azure Connection string is set "level": "DEBUG", # Send everything }, }, } -if not AZURE_APPLICATIONINSIGHTS_CONNSTRING: - log_cfg["handlers"].pop("appinsights") - log_cfg["handlers"].pop("appinsightsaccess") - log_cfg["loggers"]["jwtproxy.auditlogs"]["handlers"] = [ - "console", - ] - log_cfg["loggers"]["jwtproxy.accesslogs"]["handlers"] = [ - "console", - ] +if AZURE_APPLICATIONINSIGHTS_CONNSTRING: + from azure.monitor.opentelemetry.exporter import AzureMonitorLogExporter + from opentelemetry.sdk._logs import LoggerProvider + from opentelemetry.sdk._logs.export import BatchLogRecordProcessor + + logger_provider = LoggerProvider() + logger_provider.add_log_record_processor( + BatchLogRecordProcessor( + AzureMonitorLogExporter(connection_string=AZURE_APPLICATIONINSIGHTS_CONNSTRING) + ) + ) + log_cfg["handlers"]["appinsights"] = { + "class": "opentelemetry.sdk._logs.LoggingHandler", + "logger_provider": logger_provider, + "formatter": "json-audit", + "level": "DEBUG", + } + log_cfg["handlers"]["appinsightsaccess"] = { + "class": "opentelemetry.sdk._logs.LoggingHandler", + "logger_provider": logger_provider, + "formatter": "json", + "level": "DEBUG", + } + log_cfg["loggers"]["jwtproxy.auditlogs"]["handlers"] = ["appinsights"] + log_cfg["loggers"]["jwtproxy.accesslogs"]["handlers"] = ["appinsightsaccess"] dictConfig(log_cfg) app_logger = logging.getLogger("jwtproxy.applogs")