deej-io / zapray

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ZapRay - XRay logger that wraps uber/zap

GoDoc

ZapRay is a logger for Go. To be used in conjunction with AWS X-Ray and Zap.

Install

go get -u github.com/joe-davidson1802/zapray

Example

package main

import (
	"github.com/joe-davidson1802/zapray"
	"github.com/aws/aws-xray-sdk-go/xray"
	"go.uber.org/zap"
	)

func main() {
	// Create a zapray logger
	logger, err := zapray.NewProduction()
	if err != nil {
		panic(err)
	}

	// zapray requires the context to have been created by an xray segment
	// if this isn't the case then zapray will log without appending trace information
	ctx, seg := xray.BeginSegment(context.Background(), "someSegment")
	defer seg.Close(nil)

	// Trace returns a copy of the logger but will log trace id with any logs chained onto it
	logger.Trace(ctx).Info("my zap log")
}

Web Example

package main

import (
	"net/http"
	"github.com/joe-davidson1802/zapray"
	"github.com/aws/aws-xray-sdk-go/xray"
	"go.uber.org/zap"
	)
	
var logger *zapray.ZaprayLogger
	
func HandleRequest(w http.ResponseWriter, r *http.Request) {
	logger.TraceRequest(r).Info("some log")
}

func main() {
	// Create a zapray logger
	logger = zapray.NewProduction()
	handler := http.HandlerFunc(HandleRequest)
	segmentedHandler := xray.Handler(handler)
	// Uncomment to make a subsegment rather than a segment
	// segmentedHandler := zapray.NewMiddleware(handler)
	panic(http.ListenAndServe(":8000", segmentedHandler)
}

About

License:MIT License


Languages

Language:Go 97.0%Language:Shell 3.0%