mirror of https://github.com/knative/caching.git
37 lines
1.0 KiB
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,
|
|
}
|
|
}
|