github.com/epsagon/epsagon-go@v1.39.0/example/label_example/main.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  
     7  	"github.com/epsagon/epsagon-go/epsagon"
     8  )
     9  
    10  func doTask(a int, b string) (int, error) {
    11  	log.Printf("inside doTask: b = %s", b)
    12  
    13  	// This label will be viewable in Epsagon dashboard
    14  	epsagon.Label("my_key", 100.12)
    15  	return a + 1, fmt.Errorf("boom")
    16  }
    17  
    18  func main() {
    19  	// Normal call
    20  	res, err := doTask(3, "world")
    21  	if err != nil {
    22  		log.Printf("First result is %d", res)
    23  	} else {
    24  		log.Printf("error was: %v", err)
    25  	}
    26  
    27  	// With Epsagon instrumentation
    28  	config := epsagon.NewTracerConfig("generic-go-wrapper", "")
    29  	config.Debug = true
    30  	response := epsagon.GoWrapper(config, doTask)(5, "hello")
    31  	res2 := response[0].Int()
    32  	errInterface := response[1].Interface()
    33  	if errInterface == nil {
    34  		log.Printf("Result was %d", res2)
    35  	} else {
    36  		err := errInterface.(error)
    37  		log.Printf("error was: %v", err)
    38  	}
    39  }