stacktrace

package
v1.8.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 13, 2021 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrUnfeasibleBuilder = errors.New("unfeasible builder for this error type")

ErrUnfeasibleBuilder will be returned if builder for stacktrace was chosen incorrectly.

Functions

func GenericStack

func GenericStack(client RavenClientInterface) *raven.Stacktrace

GenericStack returns generic stacktrace.

Types

type AbstractStackBuilder

type AbstractStackBuilder struct {
	// contains filtered or unexported fields
}

AbstractStackBuilder contains methods, which would be implemented in every builder anyway.

func (*AbstractStackBuilder) Build

Build stacktrace. Only implemented in the children.

func (*AbstractStackBuilder) FallbackToGeneric

func (a *AbstractStackBuilder) FallbackToGeneric()

FallbackToGeneric fallbacks to GenericStackBuilder method.

func (*AbstractStackBuilder) GetResult

func (a *AbstractStackBuilder) GetResult() (*raven.Stacktrace, error)

GetResult returns builder result.

func (*AbstractStackBuilder) SetClient

SetClient sets *raven.Client into builder. RavenClientInterface is used, so, any client might be used via facade.

func (*AbstractStackBuilder) SetError

SetError sets error in builder, which will be processed.

type Frame

type Frame uintptr

Frame is a program counter inside a stack frame.

type GenericStackBuilder

type GenericStackBuilder struct {
	AbstractStackBuilder
}

GenericStackBuilder uses raven.NewStacktrace to build stacktrace. Only client is needed here.

func (*GenericStackBuilder) Build

Build returns generic stacktrace.

type PkgErrorCauseable

type PkgErrorCauseable interface {
	Cause() error
}

PkgErrorCauseable is an interface for checking Cause() method existence in the error.

type PkgErrorTraceable

type PkgErrorTraceable interface {
	StackTrace() pkgErrors.StackTrace
}

PkgErrorTraceable is an interface for checking StackTrace() method existence in the error.

type PkgErrorsBuilder

type PkgErrorsBuilder struct {
	AbstractStackBuilder
}

PkgErrorsBuilder builds stacktrace with data from github.com/pkg/errors error.

func (*PkgErrorsBuilder) Build

Build stacktrace.

type PkgErrorsStackTransformer

type PkgErrorsStackTransformer struct {
	// contains filtered or unexported fields
}

PkgErrorsStackTransformer transforms stack data from github.com/pkg/errors error to stacktrace.Stacktrace.

func NewPkgErrorsStackTransformer

func NewPkgErrorsStackTransformer(stack pkgErrors.StackTrace) *PkgErrorsStackTransformer

NewPkgErrorsStackTransformer is a PkgErrorsStackTransformer constructor.

func (*PkgErrorsStackTransformer) Stack

Stack returns stacktrace (which is []uintptr internally, each uintptc is a pc).

type RavenClientInterface

type RavenClientInterface interface {
	SetIgnoreErrors(errs []string) error
	SetDSN(dsn string) error
	SetRelease(release string)
	SetEnvironment(environment string)
	SetDefaultLoggerName(name string)
	SetSampleRate(rate float32) error
	Capture(packet *raven.Packet, captureTags map[string]string) (eventID string, ch chan error)
	CaptureMessage(message string, tags map[string]string, interfaces ...raven.Interface) string
	CaptureMessageAndWait(message string, tags map[string]string, interfaces ...raven.Interface) string
	CaptureError(err error, tags map[string]string, interfaces ...raven.Interface) string
	CaptureErrorAndWait(err error, tags map[string]string, interfaces ...raven.Interface) string
	CapturePanic(f func(), tags map[string]string, interfaces ...raven.Interface) (err interface{}, errorID string)
	CapturePanicAndWait(f func(), tags map[string]string, interfaces ...raven.Interface) (err interface{}, errorID string)
	Close()
	Wait()
	URL() string
	ProjectID() string
	Release() string
	IncludePaths() []string
	SetIncludePaths(p []string)
	SetUserContext(u *raven.User)
	SetHttpContext(h *raven.Http)
	SetTagsContext(t map[string]string)
	ClearContext()
}

RavenClientInterface includes all necessary calls from *raven.Client. Therefore, it can be mocked or replaced.

type RavenStackTransformer

type RavenStackTransformer interface {
	Stack() Stacktrace
}

RavenStackTransformer is an interface for any component, which will transform some unknown stacktrace data to stacktrace.Stacktrace.

type RavenStacktraceBuilder

type RavenStacktraceBuilder struct {
	// contains filtered or unexported fields
}

RavenStacktraceBuilder builds *raven.Stacktrace for any generic stack data.

func NewRavenStacktraceBuilder

func NewRavenStacktraceBuilder(p RavenStackTransformer) *RavenStacktraceBuilder

NewRavenStacktraceBuilder is a RavenStacktraceBuilder constructor.

func (*RavenStacktraceBuilder) Build

func (b *RavenStacktraceBuilder) Build(context int, appPackagePrefixes []string) *raven.Stacktrace

Build converts generic stacktrace to to github.com/getsentry/raven-go.Stacktrace.

func (*RavenStacktraceBuilder) SetTransformer

SetTransformer sets stack transformer into stacktrace builder.

type StackBuilderInterface

type StackBuilderInterface interface {
	SetClient(RavenClientInterface) StackBuilderInterface
	SetError(error) StackBuilderInterface
	Build() StackBuilderInterface
	GetResult() (*raven.Stacktrace, error)
}

StackBuilderInterface is an interface for every stacktrace builder.

func GetStackBuilderByErrorType

func GetStackBuilderByErrorType(err error) StackBuilderInterface

GetStackBuilderByErrorType tries to guess which stacktrace builder would be feasible for passed error. For example, errors from github.com/pkg/errors have StackTrace() method, and Go 1.13 errors can be unwrapped.

type Stacktrace

type Stacktrace []Frame

Stacktrace is stack of Frames.

type UnwrapBuilder

type UnwrapBuilder struct {
	AbstractStackBuilder
}

UnwrapBuilder builds stacktrace from the chain of wrapped errors.

func (*UnwrapBuilder) Build

Build stacktrace.

type Unwrappable

type Unwrappable interface {
	Unwrap() error
}

Unwrappable is the interface for errors with Unwrap() method.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL