日志中的异常语义约定

状态: 稳定

本文档定义了通过 日志 API 发出的 日志 中记录异常的语义约定。

记录异常

异常 SHOULD 作为属性记录在传递给 LogRecordLogger 发送操作中。异常 MAY 根据上下文记录在“日志”或“事件”中。

为了封装异常的正确处理,API 作者 MAY 提供一个构造函数、RecordException 方法/扩展,或类似的辅助机制,在 LogRecord 类/结构上,或者在任何最适合的地方,具体取决于语言运行时。

Attributes

下表显示了应添加到 LogRecord 的属性及其类型。

Attributes

Stability需求级别Value Type描述Example Values
exception.messageStable有条件地必需 [1]字符串异常消息。Division by zero; Can't convert 'int' object to str implicitly
exception.typeStable有条件地必需 [2]字符串异常的类型(如果适用,则为完全限定类名)。在支持它的语言中,动态类型优先于静态类型。java.net.ConnectException; OSError
exception.stacktraceStable推荐字符串堆栈跟踪,作为自然语言运行时表示的字符串。表示方式由每个语言 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)

[1] exception.message 如果未设置 exception.type,则为必需;否则,推荐设置。

[2] exception.type 如果未设置 exception.message,则为必需;否则,推荐设置。

堆栈跟踪表示

异常的追踪语义约定 - 堆栈跟踪表示 相同。