Documentation
¶
Overview ¶
Package errors кастомная реализация управления жизненным циклом ошибки. Кроме стандартных свойств и методов реализовано логгирование, HTTP и GRCP статусы, перевод сообщения. Ошибка включает в себя свойства: сообщение, тип, операция, контест.
Index ¶
- Constants
- Variables
- func As(err error, target interface{}) bool
- func Caller(skip CallDepth) func() string
- func Combine(errors ...error) error
- func CombineWithLog(errs ...error) error
- func Contains(err error, fn func(error) bool) bool
- func ContainsByErr(err error, target error) bool
- func ContainsByID(err error, id string) bool
- func DefaultTranslate(e error) string
- func Find(err error, fn func(error) bool) error
- func FindByErr(err error, target error) error
- func FindByID(err error, id string) error
- func GRPCStatusCode(err error) (codes.Code, bool)
- func GRPCStatusCodeMessage(err error) (codes.Code, string, bool)
- func GetID(err error) string
- func GetOperation(err error) string
- func HTTPStatusCode(err error) (int, bool)
- func HTTPStatusCodeMessage(err error) (int, string, bool)
- func Is(err, target error) bool
- func Log(err error, lg ...Logger)
- func StatusMessage(err error) (string, bool)
- func Translate(e error, l Localizer, tctx *TranslateContext) (string, error)
- func Unwrap(err error) error
- func Wrap(left error, right error) error
- func WrapWithLog(olderr error, err error) error
- type CallDepth
- type CtxKV
- type Error
- func Cast(err error) (*Error, bool)
- func DownstreamDependencyTimedoutErr(s string) *Error
- func DownstreamDependencyTimedoutErrWith(ops ...Options) *Error
- func DuplicateErr(s string) *Error
- func DuplicateErrWith(ops ...Options) *Error
- func EmptyErr(s string) *Error
- func EmptyErrWith(ops ...Options) *Error
- func InputBodyErr(s string) *Error
- func InputBodyErrWith(ops ...Options) *Error
- func IternalErr(s string) *Error
- func IternalErrWith(ops ...Options) *Error
- func MaximumAttemptsErr(s string) *Error
- func MaximumAttemptsErrWith(ops ...Options) *Error
- func New(i interface{}) *Error
- func NewLog(i interface{}) *Error
- func NewWith(ops ...Options) *Error
- func NewWithLog(ops ...Options) *Error
- func NotFoundErr(s string) *Error
- func NotFoundErrWith(ops ...Options) *Error
- func SubscriptionExpiredErr(s string) *Error
- func SubscriptionExpiredErrWith(ops ...Options) *Error
- func UnauthenticatedErr(s string) *Error
- func UnauthenticatedErrWith(ops ...Options) *Error
- func UnauthorizedErr(s string) *Error
- func UnauthorizedErrWith(ops ...Options) *Error
- func UnavailableErr(s string) *Error
- func UnavailableErrWith(ops ...Options) *Error
- func ValidationErr(s string) *Error
- func ValidationErrWith(ops ...Options) *Error
- func (e *Error) As(target interface{}) bool
- func (e *Error) ContextInfo() CtxKV
- func (e *Error) Error() string
- func (e *Error) ErrorType() IErrType
- func (e *Error) Format(s fmt.State, verb rune)
- func (e *Error) ID() string
- func (e *Error) Is(target error) bool
- func (e *Error) Log(l ...Logger)
- func (e *Error) Marshal(fn ...Marshaller) ([]byte, error)
- func (e *Error) Msg() string
- func (e *Error) Operation() string
- func (e *Error) Sdump() string
- func (e *Error) Unwrap() error
- func (e *Error) WithOptions(ops ...Options) *Error
- type IErrType
- type Localizer
- type Logger
- type MarshalJSON
- type MarshalString
- type Marshaller
- type Multierror
- type Options
- type TranslateContext
Examples ¶
Constants ¶
const ( // Неизвестный тип ошибки. Дефолтное значение. Unknown errType // Internal внутренняя системная ошибка. Например, отказ базы данных. Internal // Validation ошибка валидации. Например, не корректный email-адрес. Validation // InputBody ошибка обработки входных данных. Например, ошибка сериализации JSON. InputBody // Duplicate дубликат данных, нарушения уникальности. Duplicate // Unauthenticated для выполнения запроса требуется аутентфиикация. Unauthenticated Unauthorized // Empty запрос или не ответ не должен быть пустым. Empty // NotFound запрашиваемые данные не найдены. Например, пользователь с заданным ID не найден. NotFound // MaximumAttempts превышение числе разрешенных попуток выполнения одного и того же действия. MaximumAttempts // SubscriptionExpired срок действия "оплаченой" подписки истек. SubscriptionExpired // DownstreamDependencyTimedout время ожидания выполнения запрос к нижестоящему сервису истек. DownstreamDependencyTimedout Unavailable )
Variables ¶
var ( ErrNoLocalizer = New("localizer is no set") ErrNotError = New("not *Error") )
var ( // DefaultCaller is a Valuer that returns then CallInfo where the Log // method was invoked. It can only be used with log.With. DefaultCaller = Caller(DefaultCallDepth) //nolint:gochecknoglobals RuntimeCaller = Caller(RuntimeCallDepth) //nolint:gochecknoglobals HandlerCaller = Caller(HandlerCallDepth) //nolint:gochecknoglobals )
var DefaultMarshaller = &MarshalString{} //nolint:gochecknoglobals
var (
ErrUnknownMarshaller = New("marshaller not set")
)
var (
ErrUnknownType = New("unknown type")
)
Functions ¶
func As ¶
As обнаруживает ошибку err, соответствующую типу target и устанавливает target в найденное значение.
func Caller ¶
Caller returns a Valuer that returns a CallInfo from a specified depth in the callstack. Users will probably want to use DefaultCaller.
Example ¶
package main
import (
"fmt"
"time"
"github.com/ovsinc/errors"
)
func someErrWithTimedCall() error {
err := errors.NewWith(
errors.SetMsg("some call"),
errors.AppendContextInfo("call", errors.RuntimeCaller()),
errors.AppendContextInfo("duration", time.Second),
)
time.Sleep(1 * time.Second)
return err
}
func main() {
err := someErrWithTimedCall()
fmt.Printf("%s\n", err.Error())
}
Output: {call:example_test.go:306: ExampleCaller(),duration:1s} some call
func Combine ¶
Combine создаст цепочку ошибок из ошибок ...errors. Допускается использование `nil` в аргументах.
Example ¶
package main
import (
"fmt"
"github.com/ovsinc/errors"
)
func itsOk() error {
return nil
}
func itsErr(s string) error {
return errors.New(s)
}
func main() {
e := errors.Combine(
nil,
itsOk(),
itsErr("one"),
itsErr("two"),
itsOk(),
)
fmt.Println(e)
}
Output: the following errors occurred: #1 one #2 two
func CombineWithLog ¶
CombineWithLog как и Combine создаст или дополнит цепочку ошибок err с помощью errs, но при этом будет осуществлено логгирование с помощь логгера по-умолчанию.
Example ¶
Добавление ошибок в mutierror с логгированием тут изменена функция форматирования вывода -- используется json
package main
import (
"log"
"os"
"github.com/ovsinc/multilog/golog"
"github.com/ovsinc/errors"
)
func itsOk() error {
return nil
}
func itsErr(s string) error {
return errors.New(s)
}
func main() {
errors.DefaultLogger = golog.New(log.New(os.Stdout, "ovsinc/errors ", 0))
_ = errors.CombineWithLog(
nil,
itsOk(),
itsErr("one"),
itsErr("two"),
itsOk(),
)
}
Output: ovsinc/errors the following errors occurred: #1 one #2 two
func Contains ¶
Contains проверит есть ли в цепочке целевая ошибка. Допускается в качестве аргумента err указывать одиночную ошибку.
func ContainsByErr ¶ added in v1.3.0
ContainsByErr проверит есть ли в цепочке ошибка. Допускается в качестве аргумента err указывать одиночную ошибку.
func ContainsByID ¶ added in v1.3.0
ContainsByID проверит есть ли в цепочке ошибка с указанным ID. Допускается в качестве аргумента err указывать одиночную ошибку.
func DefaultTranslate ¶ added in v1.3.0
func FindByErr ¶ added in v1.3.0
FindByErr вернет ошибку (*Error) соответсвующую target или nil. Если ошибка не найдена, вернется nil.
func FindByID ¶ added in v1.3.0
FindByID вернет ошибку (*Error) с указанным ID. Если ошибка с указанным ID не найдена, вернется nil.
func GRPCStatusCode ¶ added in v1.3.0
GRPCStatusCode получить gRPC статус из error. * in: error * out: t codes.Code, ok bool Если error кастится на (*Error), то ok == true, и возвращается значение codes.Code, соответсвующее errType. В противном случае возвращается codes.Unknown и false.
func GRPCStatusCodeMessage ¶ added in v1.3.0
GRPCStatusCodeMessage получить gRPC статус из error. * in: error * out: t codes.Code, s string, ok bool Если error кастится на (*Error), то ok == true, возвращается значение t, соответсвующее errType и текстовое предсталение errType. В противном случае возвращается codes.Unknown, "Unknown", false.
func GetOperation ¶ added in v1.3.0
GetOperation возвращает операцию ошибки. Для НЕ *Error всегда будет "".
func HTTPStatusCode ¶ added in v1.3.0
HTTPStatusCode получить HTTP статус из error. * in: error * out: t int, ok bool Если error кастится на (*Error), то ok == true, и возвращается значение, соответсвующее errType. В противном случае возвращается http.StatusTeapot и false.
func HTTPStatusCodeMessage ¶ added in v1.3.0
HTTPStatusCodeMessage получить HTTP статус из error. * in: error * out: t int, s string, ok bool Если error кастится на (*Error), то ok == true, возвращается значение t, соответсвующее errType и текстовое предсталение errType. В противном случае возвращается http.StatusTeapot, "Unknown", false.
func Is ¶
Is сообщает, соответствует ли ошибка err target-ошибке. Для multierr будет производится поиск в цепочке.
func Log ¶
Log выполнить логгирование ошибки err с ипользованием логгера l[0]. Если l не указан, то в качестве логгера будет использоваться логгер по-умолчанию.
Example ¶
package main
import (
"log"
"os"
"github.com/ovsinc/multilog/golog"
"github.com/ovsinc/errors"
)
func main() {
errors.DefaultLogger = golog.New(log.New(os.Stdout, "ovsinc/errors ", 0))
errors.Log(errors.New("hello world"))
}
Output: ovsinc/errors hello world
func StatusMessage ¶ added in v1.3.0
StatusMessage получить строковое описание errType из error. * in: error * out: s string, ok bool Если error кастится на (*Error), то ok == true, возвращается значение t, соответсвующее errType и текстовое предсталение errType. В противном случае возвращается "Unknown", false.
func Translate ¶ added in v1.3.0
func Translate(e error, l Localizer, tctx *TranslateContext) (string, error)
Translate вернет перевод сообщения ошибки. Если не удастся выполнить перевод, вернет оригинальное сообщение.
Example ¶
package main
import (
"fmt"
"github.com/BurntSushi/toml"
i18n "github.com/nicksnyder/go-i18n/v2/i18n"
"golang.org/x/text/language"
"github.com/ovsinc/errors"
)
func localizePrepare() *i18n.Localizer {
bundle := i18n.NewBundle(language.English)
bundle.RegisterUnmarshalFunc("toml", toml.Unmarshal)
bundle.MustLoadMessageFile("./_examples/translate/testdata/active.ru.toml")
return i18n.NewLocalizer(bundle, "es", "ru", "en")
}
func localTransContext() errors.TranslateContext {
var (
unreadEmailCount = 5
name = "John Snow"
)
return errors.TranslateContext{
TemplateData: map[string]interface{}{
"Name": name,
"PluralCount": unreadEmailCount,
},
PluralCount: unreadEmailCount,
}
}
func main() {
errEmailsUnreadMsg := localTransContext()
localizer := localizePrepare()
e1 := errors.NewWith(
errors.SetMsg("fallback message"),
errors.SetID("ErrEmailsUnreadMsg"),
)
errors.DefaultLocalizer = localizePrepare()
defer func() {
errors.DefaultLocalizer = nil
}()
msg, _ := errors.Translate(e1, localizer, &errEmailsUnreadMsg)
fmt.Println(msg)
msg, _ = errors.Translate(e1, nil, &errEmailsUnreadMsg)
fmt.Println(msg)
eunknown := errors.NewWith(
errors.SetMsg("fallback unknown message"),
errors.SetID("ErrUnknownErrorMsg"),
)
fmt.Printf("%+s\n", eunknown)
}
Output: У John Snow имеется 5 непрочитанных сообщений. У John Snow имеется 5 непрочитанных сообщений. Неизвестная ошибка
func Wrap ¶
Wrap обернет ошибку `left` ошибкой `right`, получив цепочку. Допускается использование `nil` в одном из аргументов.
Example ¶
package main
import (
"fmt"
stderrors "errors"
"github.com/ovsinc/errors"
)
func someFuncWithErr() error {
return errors.NewWith(
errors.SetMsg("connection error"),
errors.SetContextInfo(errors.CtxKV{{"hello", "world"}}),
errors.SetOperation("write"),
errors.SetID("someid"),
)
}
func someFuncWithErr2() error {
return errors.New(
"connection error",
)
}
func main() {
e := stderrors.New("hello world")
err := someFuncWithErr()
err = errors.Wrap(err, someFuncWithErr2())
err = errors.Wrap(err, e)
fmt.Printf("%v", err)
oneErr := errors.FindByID(err, "someid")
fmt.Printf(
"err with id 'someid': %v; id: %s; op: %s\n",
oneErr,
errors.GetID(oneErr),
errors.GetOperation(oneErr),
)
fmt.Println(errors.FindByErr(err, e))
}
Output: the following errors occurred: #1 [write] {hello:world} connection error #2 connection error #3 hello world err with id 'someid': [write] {hello:world} connection error; id: someid; op: write hello world
func WrapWithLog ¶
WrapWithLog обернет ошибку olderr в err и вернет цепочку, но при этом будет осуществлено логгирование с помощь логгера по-умолчанию.
Types ¶
type CtxKV ¶ added in v1.3.0
type CtxKV []struct {
Key string
Value interface{}
}
CtxKV slice key-value контекста ошибки.
type Error ¶
type Error struct {
// contains filtered or unexported fields
}
Error структура кастомной ошибки.
func Cast ¶
Cast преобразует тип error в *Error Если error не соответствует *Error, то будет создан *Error с сообщением err.Error(). Для err == nil, вернется nil.
func DownstreamDependencyTimedoutErr ¶ added in v1.3.0
Конструктор *Error c типом DownstreamDependencyTimedout. * s string -- сообщение ошибки. ** *Error
Example ¶
package main
import (
"fmt"
"github.com/ovsinc/errors"
)
func main() {
e := errors.DownstreamDependencyTimedoutErr("hello")
fmt.Printf("%q\n", e)
fmt.Printf("%v\n", e)
}
Output: id: operation: error_type:DownstreamDependencyTimedout context_info: message:hello (DownstreamDependencyTimedout) hello
func DownstreamDependencyTimedoutErrWith ¶ added in v1.3.0
Конструктор *Error c типом DownstreamDependencyTimedout. * ops ...Options -- параметризация через функции-парметры. ** *Error
func DuplicateErr ¶ added in v1.3.0
Конструктор *Error c типом Duplicate. * s string -- сообщение ошибки. ** *Error
func DuplicateErrWith ¶ added in v1.3.0
Конструктор *Error c типом Duplicate. * ops ...Options -- параметризация через функции-парметры. ** *Error
func EmptyErr ¶ added in v1.3.0
Конструктор *Error c типом Empty. * s string -- сообщение ошибки. ** *Error
func EmptyErrWith ¶ added in v1.3.0
Конструктор *Error c типом Empty. * ops ...Options -- параметризация через функции-парметры. ** *Error
func InputBodyErr ¶ added in v1.3.0
Конструктор *Error c типом InputBody. * s string -- сообщение ошибки. ** *Error
func InputBodyErrWith ¶ added in v1.3.0
Конструктор *Error c типом InputBody. * ops ...Options -- параметризация через функции-парметры. ** *Error
func IternalErr ¶ added in v1.3.0
Конструктор *Error c типом Internal. * s string -- сообщение ошибки. ** *Error
func IternalErrWith ¶ added in v1.3.0
Конструктор *Error c типом Internal. * ops ...Options -- параметризация через функции-парметры. ** *Error
func MaximumAttemptsErr ¶ added in v1.3.0
Конструктор *Error c типом MaximumAttempts. * s string -- сообщение ошибки. ** *Error
func MaximumAttemptsErrWith ¶ added in v1.3.0
Конструктор *Error c типом MaximumAttempts. * ops ...Options -- параметризация через функции-парметры. ** *Error
func New ¶
func New(i interface{}) *Error
New конструктор *Error. Аргумент используется для указания сообщения. * In: interface{} Поддерживаемые варианты для NewWith(SetMsg(msg)): string, *Error -> as is error -> Error() interface{ String() string } -> String() func() string -> f() * Out: *Error
** *Error
Example ¶
package main
import (
"fmt"
"github.com/ovsinc/errors"
)
func main() {
e := errors.New("hello world")
fmt.Println(e.Error())
}
Output: hello world
func NewLog ¶ added in v1.3.0
func NewLog(i interface{}) *Error
NewLog конструктор *Error, как и New, но при этом будет осуществлено логгирование с помощь логгера по-умолчанию.
Example ¶
package main
import (
"log"
"os"
"github.com/ovsinc/multilog/golog"
"github.com/ovsinc/errors"
)
func main() {
errors.DefaultLogger = golog.New(log.New(os.Stdout, "ovsinc/errors ", 0))
_ = errors.NewLog("hello world")
}
Output: ovsinc/errors hello world
func NewWith ¶ added in v1.3.0
NewWith конструктор на необязательных параметрах * ops ...Options -- параметризация через функции-парметры. См. options.go
** *Error
Example ¶
package main
import (
"fmt"
"github.com/ovsinc/errors"
)
func main() {
e := errors.NewWith(
errors.SetID("myid"),
errors.SetMsg("hello"),
errors.AppendContextInfo(
"hello",
[]struct{ k, v interface{} }{{"1", 1}, {"10", 11}},
),
errors.AppendContextInfo("Joe", "Dow"),
errors.SetOperation("test op"),
errors.SetErrorType(errors.InputBody),
)
fmt.Printf("%q\n", e)
fmt.Printf("%v\n", e)
fmt.Printf("%c\n", e)
fmt.Printf("%t\n", e)
fmt.Printf("%o\n", e)
fmt.Printf("%s\n", e)
fmt.Printf("%j\n", e)
fmt.Printf("%f\n", e)
}
Output: id:myid operation:test op error_type:InputBody context_info:hello:[{1 1} {10 11}],Joe:Dow message:hello (InputBody) [test op] {hello:[{1 1} {10 11}],Joe:Dow} hello hello:[{1 1} {10 11}],Joe:Dow InputBody test op hello {"id":"myid","operation":"test op","error_type":"InputBody","context":{"hello":"[{1 1} {10 11}]","Joe":"Dow"},"msg":"hello"} example_test.go:101: ExampleNewWith()
func NewWithLog ¶
NewWithLog конструктор *Error, как и NewWith, но при этом будет осуществлено логгирование с помощь логгера по-умолчанию.
Example ¶
package main
import (
"log"
"os"
"github.com/ovsinc/multilog/golog"
"github.com/ovsinc/errors"
)
func itsOk() error {
return nil
}
func main() {
errors.DefaultLogger = golog.New(log.New(os.Stdout, "ovsinc/errors ", 0))
_ = errors.Combine(
nil,
itsOk(),
errors.NewLog("one"),
errors.NewLog("two"),
itsOk(),
)
_ = errors.NewLog("three")
}
Output: ovsinc/errors one ovsinc/errors two ovsinc/errors three
func NotFoundErr ¶ added in v1.3.0
Конструктор *Error c типом NotFound. * s string -- сообщение ошибки. ** *Error
func NotFoundErrWith ¶ added in v1.3.0
Конструктор *Error c типом NotFound. * ops ...Options -- параметризация через функции-парметры. ** *Error
func SubscriptionExpiredErr ¶ added in v1.3.0
Конструктор *Error c типом SubscriptionExpired. * s string -- сообщение ошибки. ** *Error
func SubscriptionExpiredErrWith ¶ added in v1.3.0
Конструктор *Error c типом SubscriptionExpired. * ops ...Options -- параметризация через функции-парметры. ** *Error
func UnauthenticatedErr ¶ added in v1.3.0
Конструктор *Error c типом Unauthenticated. * s string -- сообщение ошибки. ** *Error
func UnauthenticatedErrWith ¶ added in v1.3.0
Конструктор *Error c типом Unauthenticated. * ops ...Options -- параметризация через функции-парметры. ** *Error
func UnauthorizedErr ¶ added in v1.3.0
Конструктор *Error c типом Unauthorized. * s string -- сообщение ошибки. ** *Error
func UnauthorizedErrWith ¶ added in v1.3.0
Конструктор *Error c типом Unauthorized. * ops ...Options -- параметризация через функции-парметры. ** *Error
func UnavailableErr ¶ added in v1.3.0
Конструктор *Error c типом Unavailable. * s string -- сообщение ошибки. ** *Error
func UnavailableErrWith ¶ added in v1.3.0
Конструктор *Error c типом Unavailable. * ops ...Options -- параметризация через функции-парметры. ** *Error
func ValidationErr ¶ added in v1.3.0
Конструктор *Error c типом Validation. * s string -- сообщение ошибки. ** *Error
func ValidationErrWith ¶ added in v1.3.0
Конструктор *Error c типом Validation. * ops ...Options -- параметризация через функции-парметры. ** *Error
func (*Error) ContextInfo ¶
ContextInfo вернет контекст CtxKV ошибки.
func (*Error) Error ¶
Error возвращает строковое представление ошибки. Метод для реализации интерфейса error. Метод произволит перевод сообщения об ошибки, если localizer != nil. Для идентификации сообщения перевода используется ID ошибки.
func (*Error) Log ¶
Log выполнит логгирование ошибки с ипользованием логгера l[0]. Если l не указан, то в качестве логгера будет использоваться логгер по-умолчанию.
func (*Error) Marshal ¶ added in v1.3.0
func (e *Error) Marshal(fn ...Marshaller) ([]byte, error)
Marshal метод маршалит *Error. * fn ...Marshaller -- необязательный парамет для вызова кастомного маршалера если не указано, используется дефолтный. ** []byte, error
Example ¶
package main
import (
"fmt"
"github.com/ovsinc/errors"
)
func main() {
e := errors.NewWith(
errors.SetID("myid"),
errors.SetMsg("hello"),
errors.AppendContextInfo(
"hello",
[]struct{ k, v interface{} }{{"1", 1}, {"10", 11}},
),
errors.AppendContextInfo("Joe", "Dow"),
errors.SetOperation("test op"),
errors.SetErrorType(errors.InputBody),
)
buf, _ := e.Marshal(&errors.MarshalJSON{})
fmt.Println(string(buf))
}
Output: {"id":"myid","operation":"test op","error_type":"InputBody","context":{"hello":"[{1 1} {10 11}]","Joe":"Dow"},"msg":"hello"}
func (*Error) WithOptions ¶
WithOptions производит параметризацию *Error с помощью функции-парметры Options. Допускается указывать произвольно количество ops. Возвращается новый экземпляр *Error с переопределением заданных параметров.
Example ¶
package main
import (
"fmt"
"github.com/ovsinc/errors"
)
func main() {
e1 := errors.New("hello")
e2 := e1.WithOptions(
errors.AppendContextInfo("hello", "world"),
errors.SetOperation("test op"),
)
fmt.Println(e1.Error())
fmt.Println(e2.Error())
}
Output: hello [test op] {hello:world} hello
type IErrType ¶ added in v1.3.0
type IErrType interface {
HTTPStatusCode() int
GRPCStatusCode() codes.Code
Number() int
String() string
}
func GetErrType ¶ added in v1.3.0
GetErrType получить errType из error. * in: error * out: t errType, ok bool Если error кастится на (*Error), то ok == true, и возвращается значение errType. В противном случае возвращается defaultErrType и false.
func ParseErrType ¶ added in v1.3.0
ParseErrType позволяет получить IErrType по названию.
type Localizer ¶ added in v1.3.0
type Localizer interface {
Localize(*i18n.LocalizeConfig) (string, error)
}
var DefaultLocalizer Localizer //nolint:gochecknoglobals
DefaultLocalizer локализатор по-умолчанию. Для каждой ошибки можно переопределить локализатор.
type Logger ¶ added in v1.3.0
type Logger interface {
Errorf(format string, args ...interface{})
}
Logger используемый в пакете интерфейс логгера.
var DefaultLogger Logger = multilog.DefaultLogger //nolint:gochecknoglobals
DefaultLogger дефолтный логгер в пакете.
type MarshalJSON ¶ added in v1.3.0
type MarshalJSON struct{}
func (*MarshalJSON) Marshal ¶ added in v1.3.0
func (m *MarshalJSON) Marshal(i interface{}) ([]byte, error)
type MarshalString ¶ added in v1.3.0
type MarshalString struct{}
func (*MarshalString) Marshal ¶ added in v1.3.0
func (m *MarshalString) Marshal(i interface{}) ([]byte, error)
type Marshaller ¶ added in v1.3.0
type Multierror ¶
type Multierror interface {
Errors() []error
Error() string
Format(f fmt.State, c rune)
Marshal(fn ...Marshaller) ([]byte, error)
Len() int
Log(l ...Logger)
Unwrap() error
Last() error
}
func CastMultierr ¶ added in v1.3.0
func CastMultierr(err error) (Multierror, bool)
CastMultierr преобразует тип error в *Multierror Если error не соответствует Multierror, то будет создан Multierror с сообщением err.Error(). Для err == nil, вернется nil.
type Options ¶
type Options func(e *Error)
Options опции-параметры ошибки.
func AppendContextInfo ¶
AppendContextInfo, key, val - строки. Добавит в имеющийся CtxKV значение value по ключу key. CtxKV будет инициализирован, если ранее этого не было сделано.
func SetContextInfo ¶
SetContextInfo, CtxKV. Установит контекст.
func SetErrorType ¶
SetErrorType, IErrType (enum). Установит тип.
func SetOperation ¶ added in v1.3.0
SetOperation, строка. Установит имя операции.
type TranslateContext ¶
type TranslateContext struct {
// TemplateData - map для замены в шаблоне
TemplateData map[string]interface{}
// PluralCount признак множественности.
// Может иметь значение nil или число.
PluralCount interface{}
// DefaultMessage сообщение, которое будет использовано при ошибке перевода.
DefaultMessage *i18n.Message
}
TranslateContext контекст перевода. Не является обязательным для корректного перевода.