package
0.10.0
Repository: https://github.com/kittipat1413/go-common.git
Documentation: pkg.go.dev

# README

Contributions Welcome Total Views Release

Trace Package

The trace package provides an easy-to-use utility for adding distributed tracing to Go applications using OpenTelemetry. With support for multiple trace exporters, function-level tracing, and integration with web frameworks like Gin, this package simplifies instrumentation and performance monitoring across services.

Key Features:

  • Tracer Provider Initialization: Easily initialize and configure OpenTelemetry's Tracer Provider with support for multiple exporters, including: gRPC Exporter: Export traces to remote tracing backends. Stdout Exporter: Print traces to the console for local development and debugging.
  • Function-Level Tracing (TraceFunc): Automatically trace the execution of any Go function, including capturing function start/end times, execution status, and errors.

Usage

1. Initialize Tracer Provider

To initialize the Tracer Provider, call InitTracerProvider with the service name and desired exporter:

ctx := context.Background()
tracerProvider, err := trace.InitTracerProvider(ctx, "my-service", nil, trace.ExporterStdout)
if err != nil {
    log.Fatalf("Failed to initialize tracer provider: %v", err)
}
defer tracerProvider.Shutdown(ctx)

You can also set the OTEL_SERVICE_NAME environment variable to override the service name dynamically. Additionally, you can set the OTEL_RESOURCE_ATTRIBUTES environment variable to specify additional resource attributes.

2. Function-Level Tracing (TraceFunc)

Wrap any function in TraceFunc to automatically trace its execution:

result, err := trace.TraceFunc(ctx, otel.Tracer("my-tracer"), func(ctx context.Context) (string, error) {
    // Simulate some processing
    time.Sleep(100 * time.Millisecond)
    return "Hello, World!", nil
})

if err != nil {
    log.Fatalf("Error executing traced function: %v", err)
}
fmt.Println("Result:", result)

Example

You can find a complete working example in the repository under framework/trace/example.

# Packages

No description provided by the author

# Functions

No description provided by the author
InitTracerProvider initializes an OpenTelemetry TracerProvider with the specified service name, exporter type, and gRPC endpoint (if needed).
TraceFunc traces the start and end of a function and returns its result.

# Constants

No description provided by the author
No description provided by the author

# Type aliases

No description provided by the author