Docs · Go

Logs y alertas en Go, en 5 minutos

Los errores y los panics de tu app de Go con su stack, el hilo de cada petición entre tus servicios y el aviso al teléfono cuando un pedido no termina. Un archivo, sin dependencias.

  1. 1

    Instala

    // copia estiaje.go a tu proyecto (Go 1.18 o superior, en su paquete estiaje)

    Es un archivo sin dependencias: cópialo de aquí. Cambia "mi-api" por el nombre de tu servicio.

  2. 2

    Tu llave

    Crea tu cuenta y pon la llave en ESTIAJE_TOKEN. O pídele a tu IA «conecta este repo a Estiaje» (el conector). Sin la llave no sale nada por la red: puedes instrumentar hoy.

  3. 3

    Tus errores, tus panics y el hilo de cada petición

    ● Probado en CI
    func main() {
    	defer estiaje.Recuperar(context.Background())   // un panic llega antes de que muera
    
    	// el hilo de cada petición (y sus panics); sirve igual con chi o gorilla/mux
    	http.ListenAndServe(":8080", estiaje.Middleware(mux))
    }
    func main() {
    	defer estiaje.Recuperar(context.Background())   // un panic llega antes de que muera
    
    	r := gin.Default()
    	r.Use(func(c *gin.Context) {   // el hilo de cada petición
    		c.Request = c.Request.WithContext(estiaje.ConHilo(c.Request.Context(), c.GetHeader("traceparent")))
    		c.Next()
    	})
    }
    func main() {
    	ctx := estiaje.ConHilo(context.Background(), "")   // un hilo nuevo para este trabajo
    	defer estiaje.Esperar()   // al final: espera los envíos antes de salir
    	defer estiaje.Recuperar(ctx)
    	corte(ctx)
    }
  4. 4

    El proceso que debe terminar

    estiaje.Evento(r.Context(), "pedido.pagado", map[string]any{"order_id": p.ID, "monto": p.Total})
    // … cuando se surte …
    estiaje.Evento(ctx, "pedido.surtido", map[string]any{"order_id": p.ID})
  5. 5

    El aviso

    En el panel, en Procesos: «todo pedido.pagado espera su pedido.surtido, por order_id, en 30 minutos». Si no llega, te avisa al teléfono, por correo o en Slack, con el dinero en riesgo.

Y si quieres más
  • Los errores que atrapas: estiaje.Error(ctx, err, map[string]any{"order_id": p.ID}), con su stack.
  • Al llamar a otro servicio, pasa el hilo: &http.Client{Transport: estiaje.Transporte{}} y la petición con su ctx.
  • Go 1.18 o superior; solo la biblioteca estándar.

Todo lo demás está en la documentación completa.

Crear cuenta, 14 días de Pro Sin tarjeta. En pesos.