Status: Stable
This document defines semantic conventions for recording application exceptions associated with spans.
The event name MUST be exception
.
This event describes a single exception.
Attribute | Type | Description | Examples | Requirement Level | Stability |
---|---|---|---|---|---|
exception.message |
string | The exception message. | Division by zero ; Can't convert 'int' object to str implicitly |
Conditionally Required [1] |
|
exception.type |
string | The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it. | java.net.ConnectException ; OSError |
Conditionally Required [2] |
|
exception.escaped |
boolean | Indicates that the exception is escaping the scope of the span. | Recommended |
It's no longer recommended to record exceptions that are handled and do not escape the scope of a span. |
|
exception.stacktrace |
string | A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG. | Exception in thread "main" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5) |
Recommended |
[1] exception.message
: Required if exception.type
is not set, recommended otherwise.
[2] exception.type
: Required if exception.message
is not set, recommended otherwise.
The table below, adapted from Google Cloud, includes possible representations of stacktraces in various languages. The table is not meant to be a recommendation for any particular language, although SIGs are free to adopt them if they see fit.
Language | Format |
---|---|
C# | the return value of Exception.ToString() |
Elixir | the return value of Exception.format/3 |
Erlang | the return value of erl_error:format |
Go | the return value of runtime.Stack |
Java | the contents of Throwable.printStackTrace() |
Javascript | the return value of error.stack as returned by V8 |
Python | the return value of traceback.format_exc() |
Ruby | the return value of Exception.full_message |
Backends can use the language specified methodology for generating a stacktrace combined with platform information from the telemetry sdk resource in order to extract more fine grained information from a stacktrace, if necessary.