例外
この記事は英語の原文を日本語に翻訳したものです。原文: https://opentelemetry.io/docs/specs/otel/trace/exceptions/
翻訳元: open-telemetry/opentelemetry-specification v1.60.0(コミット 29ae8c7)
ステータス: 特記のない限りStable
この文書は、例外とその属性をどのように記録するかを定義します。
例外の記録
例外は、それがスパン終了時に未処理のまま残り、スパンのステータスがERRORに設定される原因となった場合に限り、その例外が発生した間のスパン上のEventとして記録すべきです(SHOULD)。
イベントの名前は"exception"でなければなりません(MUST)。
ステータス: Development - 各シグナルをまたいでエラーを報告する方法の詳細については、Recording Errors文書を参照してください。
このセマンティック規約を実装する自動計装の典型的なテンプレートは、APIが提供するrecordExceptionメソッドを使うと、以下のようになります(疑似Javaコード)。
Span span = myTracer.startSpan(/*...*/);
try {
// Code that does the actual work which the Span represents
} catch (Throwable e) {
span.recordException(e);
span.setAttribute(AttributeKey.stringKey("error.type"), e.getClass().getCanonicalName())
span.setStatus(StatusCode.ERROR, e.getMessage());
throw e;
} finally {
span.end();
}
属性
例外を表すイベントは、イベント名としてexceptionを持たなければなりません(MUST)。
さらに、以下の属性を記入すべきです(SHOULD)。
exception.messageexception.stacktraceexception.type
これらの属性の形式と意味は、セマンティック規約で定義されています。