Added
- AppSignal warns when your application attaches the OpenTelemetry log handler from
opentelemetry.sdk._logs, which is deprecated and is removed in a future release of the OpenTelemetry SDK. Its replacement is inopentelemetry.instrumentation.logging.handler.
Changed
-
A log message that is not a string, such as the dictionary in
logger.info({"message": "Order placed", "order_id": 1234}), is sent as text by thelogginginstrumentation. Pass the structured values in theextraargument to send a structured log line:Pythonlogger.info("Order placed", extra={"order_id": 1234})The OpenTelemetry logs API sends a structured log line from a dictionary body.
Removed
- AppSignal for Python no longer supports Python 3.8 and 3.9, requiring Python 3.10 or newer.
Fixed
-
Ensure that data sent for check-ins, to an external collector, or via the agent always honors the
http_proxyconfiguration option and theAPPSIGNAL_HTTP_PROXYenvironment variable first, falling back to theHTTP_PROXYandHTTPS_PROXYenvironment variables if the configuration option is unset, and always ignores theNO_PROXYenvironment variable. -
Fix local traffic to the AppSignal agent being incorrectly sent to an external proxy when the
http_proxyconfiguration option is set in agent mode. -
Improve handling of the extension internal queue when full.
-
Fix issues in the extension that lead to gaps in data reporting.
-
Logs are now still sent after your application configures the logging module.
logging.config.dictConfig(),logging.config.fileConfig()andlogging.basicConfig()keep AppSignal's log handler attached, so a configuration that sets its own handlers on the root logger, such as Django'sLOGGINGsetting, will now send its logs to AppSignal as well.If you have manually added an OpenTelemetry log handler to your
LOGGINGsetting or to the root logger elsewhere, it should now be removed, as AppSignal's handler will now send those log lines as well, causing them to be sent twice. AppSignal will log a warning when it detects a redundant OpenTelemetry handler. -
When
disable_default_instrumentationsis used to disable thelogginginstrumentation, prevent the log lines emitted internally by AppSignal from propagating to a manually configured OpenTelemetry handler in the root logger. -
logging.basicConfig()applies the log level it is given. An application that calls it with a level belowWARNING, such aslogging.INFO, starts sending its log lines at that level. -
Fix an issue where AppSignal would configure redundant handlers when starting again in a forked process, such as when a Celery worker calls
appsignal.start()from theworker_process_initsignal.
View the Python package v1.9.0 changelog for more information.