86 lines
3.2 KiB
Markdown
86 lines
3.2 KiB
Markdown
* Dependency the toolkit, such as using maven or gradle
|
|
```xml
|
|
<dependency>
|
|
<groupId>org.apache.skywalking</groupId>
|
|
<artifactId>apm-toolkit-trace</artifactId>
|
|
<version>${skywalking.version}</version>
|
|
</dependency>
|
|
```
|
|
|
|
* Use `TraceContext.traceId()` API to obtain traceId.
|
|
```java
|
|
import TraceContext;
|
|
...
|
|
|
|
modelAndView.addObject("traceId", TraceContext.traceId());
|
|
```
|
|
* Use `TraceContext.segmentId()` API to obtain segmentId.
|
|
```java
|
|
import TraceContext;
|
|
...
|
|
|
|
modelAndView.addObject("segmentId", TraceContext.segmentId());
|
|
```
|
|
|
|
* Use `TraceContext.spanId()` API to obtain spanId.
|
|
```java
|
|
import TraceContext;
|
|
...
|
|
|
|
modelAndView.addObject("spanId", TraceContext.spanId());
|
|
```
|
|
|
|
|
|
_Sample codes only_
|
|
|
|
* Add `@Trace` to any method you want to trace. After that, you can see the span in the Stack.
|
|
* Methods annotated with `@Tag` will try to tag the **current active span** with the given key (`Tag#key()`) and (`Tag#value()`),
|
|
if there is no active span at all, this annotation takes no effect. `@Tag` can be repeated, and can be used in companion with `@Trace`, see examples below.
|
|
The `value` of `Tag` is the same as what are supported in [Customize Enhance Trace](Customize-enhance-trace.md).
|
|
* Add custom tag in the context of traced method, `ActiveSpan.tag("key", "val")`.
|
|
|
|
* `ActiveSpan.error()` Mark the current span as error status.
|
|
* `ActiveSpan.error(String errorMsg)` Mark the current span as error status with a message.
|
|
* `ActiveSpan.error(Throwable throwable)` Mark the current span as error status with a Throwable.
|
|
* `ActiveSpan.debug(String debugMsg)` Add a debug level log message in the current span.
|
|
* `ActiveSpan.info(String infoMsg)` Add an info level log message in the current span.
|
|
* `ActiveSpan.setOperationName(String operationName)` Customize an operation name.
|
|
|
|
```java
|
|
ActiveSpan.tag("my_tag", "my_value");
|
|
ActiveSpan.error();
|
|
ActiveSpan.error("Test-Error-Reason");
|
|
|
|
ActiveSpan.error(new RuntimeException("Test-Error-Throwable"));
|
|
ActiveSpan.info("Test-Info-Msg");
|
|
ActiveSpan.debug("Test-debug-Msg");
|
|
|
|
/**
|
|
* The codes below will generate a span,
|
|
* and two types of tags,
|
|
one type tag: keys are `tag1` and `tag2`, values are the passed-in parameters, respectively,
|
|
the other type tag: keys are `username` and `age`, values are the return value in User, respectively
|
|
*/
|
|
@Trace
|
|
@Tag(key = "tag1", value = "arg[0]")
|
|
@Tag(key = "tag2", value = "arg[1]")
|
|
@Tag(key = "username", value = "returnedObj.username")
|
|
@Tag(key = "age", value = "returnedObj.age")
|
|
public User methodYouWantToTrace(String param1, String param2) {
|
|
// ActiveSpan.setOperationName("Customize your own operation name, if this is an entry span, this would be an endpoint name");
|
|
// ...
|
|
}
|
|
```
|
|
|
|
* Use `TraceContext.putCorrelation()` API to put custom data in tracing context.
|
|
```java
|
|
Optional<String> previous = TraceContext.putCorrelation("customKey", "customValue");
|
|
```
|
|
CorrelationContext will remove the item when the value is `null` or empty.
|
|
|
|
* Use `TraceContext.getCorrelation()` API to get custom data.
|
|
```java
|
|
Optional<String> value = TraceContext.getCorrelation("customKey");
|
|
```
|
|
CorrelationContext configuration descriptions could be found in [the agent configuration](README.md#table-of-agent-configuration-properties) documentation, with `correlation.` as the prefix.
|