caching/vendor/github.com/blendle/zapdriver/service.go

37 lines
1.0 KiB
Go

package zapdriver
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
const serviceContextKey = "serviceContext"
// ServiceContext adds the correct service information adding the log line
// It is a required field if an error needs to be reported.
//
// see: https://cloud.google.com/error-reporting/reference/rest/v1beta1/ServiceContext
// see: https://cloud.google.com/error-reporting/docs/formatting-error-messages
func ServiceContext(name string) zap.Field {
return zap.Object(serviceContextKey, newServiceContext(name))
}
// serviceContext describes a running service that sends errors.
// Currently it only describes a service name.
type serviceContext struct {
Name string `json:"service"`
}
// MarshalLogObject implements zapcore.ObjectMarshaller interface.
func (service_context serviceContext) MarshalLogObject(enc zapcore.ObjectEncoder) error {
enc.AddString("service", service_context.Name)
return nil
}
func newServiceContext(name string) *serviceContext {
return &serviceContext{
Name: name,
}
}