1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
package structerr
import (
"context"
"errors"
"github.com/sirupsen/logrus"
)
// FieldsProducer extracts metadata from err if it contains a `structerr.Error` and exposes it as
// logged fields. This function is supposed to be used with `log.MessageProducer()`.
func FieldsProducer(_ context.Context, err error) logrus.Fields {
var structErr Error
if errors.As(err, &structErr) {
metadata := structErr.Metadata()
if len(metadata) == 0 {
return nil
}
return logrus.Fields{
"error_metadata": metadata,
}
}
return nil
}
|