public class SofaTracerSpan extends Object implements io.opentracing.Span
| 限定符和类型 | 字段和说明 |
|---|---|
static char |
ARRAY_SEPARATOR |
| 构造器和说明 |
|---|
SofaTracerSpan(SofaTracer sofaTracer,
long startTime,
List<SofaTracerSpanReferenceRelationship> spanReferences,
String operationName,
SofaTracerSpanContext sofaTracerSpanContext,
Map<String,?> tags)
注意:
1.作为服务端:还原回
SofaTracerSpanContext 之后,就可以直接构造 Server Span(traceId,spanId 不变)
2.作为客户端:需要通过 构建 |
SofaTracerSpan(SofaTracer sofaTracer,
long startTime,
String operationName,
SofaTracerSpanContext sofaTracerSpanContext,
Map<String,?> tags)
作为服务端:还原回
SofaTracerSpanContext 之后,就可以直接构造 Server Span(traceId,spanId 不变) |
| 限定符和类型 | 方法和说明 |
|---|---|
SofaTracerSpan |
cloneInstance() |
void |
close() |
io.opentracing.SpanContext |
context() |
void |
finish() |
void |
finish(long endTime) |
String |
getBaggageItem(String key)
默认设置和读取的都是业务 baggage
|
long |
getDurationMicroseconds() |
long |
getEndTime() |
List<LogData> |
getLogs() |
String |
getLogType() |
String |
getOperationName() |
SofaTracerSpan |
getParentSofaTracerSpan() |
SofaTracer |
getSofaTracer() |
SofaTracerSpanContext |
getSofaTracerSpanContext() |
List<SofaTracerSpanReferenceRelationship> |
getSpanReferences() |
long |
getStartTime() |
Map<String,Boolean> |
getTagsWithBool() |
Map<String,Number> |
getTagsWithNumber() |
Map<String,String> |
getTagsWithStr() |
SofaTracerSpan |
getThisAsParentWhenExceedLayer()
返回自身作为下一个上下文的 parent
采用 countMatches 来对 .
|
boolean |
isClient() |
boolean |
isServer() |
io.opentracing.Span |
log(LogData logData) |
io.opentracing.Span |
log(long currentTime,
Map<String,?> map) |
io.opentracing.Span |
log(long currentTime,
String eventValue) |
io.opentracing.Span |
log(long currentTime,
String eventName,
Object payload) |
io.opentracing.Span |
log(Map<String,?> map) |
io.opentracing.Span |
log(String eventValue) |
io.opentracing.Span |
log(String eventName,
Object payload) |
void |
profile(String profileApp,
String protocolType,
String profileMessage)
打印 Common Profile 日志
|
void |
reportError(String errorType,
Map<String,String> context,
Throwable e,
String errorSourceApp,
String... errorSources) |
io.opentracing.Span |
setBaggageItem(String key,
String value)
默认设置和读取的都是业务 baggage
|
void |
setEndTime(long endTime) |
void |
setLogType(String logType) |
io.opentracing.Span |
setOperationName(String operationName) |
void |
setParentSofaTracerSpan(SofaTracerSpan parentSofaTracerSpan) |
void |
setStartTime(long startTime) |
io.opentracing.Span |
setTag(String key,
boolean value) |
io.opentracing.Span |
setTag(String key,
Number number) |
io.opentracing.Span |
setTag(String key,
String value) |
String |
toString() |
public static final char ARRAY_SEPARATOR
public SofaTracerSpan(SofaTracer sofaTracer, long startTime, String operationName, SofaTracerSpanContext sofaTracerSpanContext, Map<String,?> tags)
SofaTracerSpanContext 之后,就可以直接构造 Server Span(traceId,spanId 不变)sofaTracer - sofaTracer 当前具体中间件 tracerstartTime - 开始时间operationName - 操作名称sofaTracerSpanContext - 当前上下文信息tags - 标签public SofaTracerSpan(SofaTracer sofaTracer, long startTime, List<SofaTracerSpanReferenceRelationship> spanReferences, String operationName, SofaTracerSpanContext sofaTracerSpanContext, Map<String,?> tags)
SofaTracerSpanContext 之后,就可以直接构造 Server Span(traceId,spanId 不变)
2.作为客户端:需要通过 构建sofaTracer - 当前 tracerstartTime - 开始时间spanReferences - 引用关系operationName - 操作名称sofaTracerSpanContext - 当前上下文tags - 标签public SofaTracerSpan cloneInstance()
public io.opentracing.SpanContext context()
context 在接口中 io.opentracing.Spanpublic void finish()
finish 在接口中 io.opentracing.Spanpublic void finish(long endTime)
finish 在接口中 io.opentracing.Spanpublic void close()
close 在接口中 io.opentracing.Spanclose 在接口中 Closeableclose 在接口中 AutoCloseablepublic io.opentracing.Span setTag(String key, String value)
setTag 在接口中 io.opentracing.Spanpublic io.opentracing.Span setTag(String key, boolean value)
setTag 在接口中 io.opentracing.Spanpublic io.opentracing.Span setTag(String key, Number number)
setTag 在接口中 io.opentracing.Spanpublic io.opentracing.Span log(String eventValue)
log 在接口中 io.opentracing.Spanpublic io.opentracing.Span log(long currentTime,
String eventValue)
log 在接口中 io.opentracing.Spanpublic io.opentracing.Span log(LogData logData)
public io.opentracing.Span log(long currentTime,
Map<String,?> map)
log 在接口中 io.opentracing.Spanpublic io.opentracing.Span log(String eventName, Object payload)
log 在接口中 io.opentracing.Spanpublic io.opentracing.Span log(long currentTime,
String eventName,
Object payload)
log 在接口中 io.opentracing.Spanpublic io.opentracing.Span setBaggageItem(String key, String value)
setBaggageItem 在接口中 io.opentracing.Spankey - 关键字value - 值public String getBaggageItem(String key)
getBaggageItem 在接口中 io.opentracing.Spankey - 关键字public io.opentracing.Span setOperationName(String operationName)
setOperationName 在接口中 io.opentracing.Spanpublic void reportError(String errorType, Map<String,String> context, Throwable e, String errorSourceApp, String... errorSources)
errorType - errorType error 描述:timeout_error/biz_error...context - context 记录的上下文信息e - e 异常信息errorSourceApp - errorSources 故障源 trade|rpcerrorSources - errorSources 故障源数组public void profile(String profileApp, String protocolType, String profileMessage)
profileApp - profile 应用protocolType - 协议类型profileMessage - 日志内容public SofaTracerSpan getThisAsParentWhenExceedLayer()
采用 countMatches 来对 . 进行计数, 以获取更高的性能, 见com.alipay.common.tracer.benchmark.CountBenchmark 的性能测试数据 防止 SofaTracerSpan 嵌套过深导致内存泄漏。这个时候重新创建一个上下文,使上面的上下文都能够释放。
public List<SofaTracerSpanReferenceRelationship> getSpanReferences()
public SofaTracer getSofaTracer()
public long getStartTime()
public void setStartTime(long startTime)
public long getEndTime()
public void setEndTime(long endTime)
public long getDurationMicroseconds()
public String getOperationName()
public SofaTracerSpanContext getSofaTracerSpanContext()
public String getLogType()
public void setLogType(String logType)
public SofaTracerSpan getParentSofaTracerSpan()
public void setParentSofaTracerSpan(SofaTracerSpan parentSofaTracerSpan)
public boolean isServer()
public boolean isClient()
Copyright © 2018 Pivotal Software, Inc.. All rights reserved.