DemoSpanProcessor.java 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /*
  2. * Copyright The OpenTelemetry Authors
  3. * SPDX-License-Identifier: Apache-2.0
  4. */
  5. package com.example.javaagent;
  6. import io.opentelemetry.context.Context;
  7. import io.opentelemetry.sdk.common.CompletableResultCode;
  8. import io.opentelemetry.sdk.trace.ReadWriteSpan;
  9. import io.opentelemetry.sdk.trace.ReadableSpan;
  10. import io.opentelemetry.sdk.trace.SpanProcessor;
  11. import org.apache.commons.lang3.RandomStringUtils;
  12. /**
  13. * See <a
  14. * href="https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/sdk.md#span-processor">
  15. * OpenTelemetry Specification</a> for more information about {@link SpanProcessor}.
  16. *
  17. * @see DemoAutoConfigurationCustomizerProvider
  18. */
  19. public class DemoSpanProcessor implements SpanProcessor {
  20. @Override
  21. public void onStart(Context parentContext, ReadWriteSpan span) {
  22. /*
  23. The sole purpose of this attribute is to introduce runtime dependency on some external library.
  24. We need this to demonstrate how extension can use them.
  25. */
  26. span.setAttribute("random", RandomStringUtils.random(10));
  27. span.setAttribute("custom", "demo");
  28. }
  29. @Override
  30. public boolean isStartRequired() {
  31. return true;
  32. }
  33. @Override
  34. public void onEnd(ReadableSpan span) {}
  35. @Override
  36. public boolean isEndRequired() {
  37. return false;
  38. }
  39. @Override
  40. public CompletableResultCode shutdown() {
  41. return CompletableResultCode.ofSuccess();
  42. }
  43. @Override
  44. public CompletableResultCode forceFlush() {
  45. return CompletableResultCode.ofSuccess();
  46. }
  47. }