Documentation ¶
Index ¶
- Constants
- Variables
- func AddBreadcrumb(breadcrumb *Breadcrumb)
- func AddGlobalEventProcessor(processor EventProcessor)
- func ConfigureScope(f func(scope *Scope))
- func Flush(timeout time.Duration) bool
- func HasHubOnContext(ctx context.Context) bool
- func Init(options ClientOptions) error
- func PopScope()
- func PushScope()
- func SetHubOnContext(ctx context.Context, hub *Hub) context.Context
- func WithScope(f func(scope *Scope))
- type Breadcrumb
- type BreadcrumbHint
- type Client
- func (client *Client) AddEventProcessor(processor EventProcessor)
- func (client *Client) CaptureEvent(event *Event, hint *EventHint, scope EventModifier) *EventID
- func (client *Client) CaptureException(exception error, hint *EventHint, scope EventModifier) *EventID
- func (client *Client) CaptureMessage(message string, hint *EventHint, scope EventModifier) *EventID
- func (client *Client) Flush(timeout time.Duration) bool
- func (client Client) Options() ClientOptions
- func (client *Client) Recover(err interface{}, hint *EventHint, scope EventModifier) *EventID
- func (client *Client) RecoverWithContext(ctx context.Context, err interface{}, hint *EventHint, scope EventModifier) *EventID
- type ClientOptions
- type Dsn
- type DsnParseError
- type Event
- type EventHint
- type EventID
- type EventModifier
- type EventProcessor
- type Exception
- type Frame
- type Hub
- func (hub *Hub) AddBreadcrumb(breadcrumb *Breadcrumb, hint *BreadcrumbHint)
- func (hub *Hub) BindClient(client *Client)
- func (hub *Hub) CaptureEvent(event *Event) *EventID
- func (hub *Hub) CaptureException(exception error) *EventID
- func (hub *Hub) CaptureMessage(message string) *EventID
- func (hub *Hub) Client() *Client
- func (hub *Hub) Clone() *Hub
- func (hub *Hub) ConfigureScope(f func(scope *Scope))
- func (hub *Hub) Flush(timeout time.Duration) bool
- func (hub *Hub) LastEventID() EventID
- func (hub *Hub) PopScope()
- func (hub *Hub) PushScope() *Scope
- func (hub *Hub) Recover(err interface{}) *EventID
- func (hub *Hub) RecoverWithContext(ctx context.Context, err interface{}) *EventID
- func (hub *Hub) Scope() *Scope
- func (hub *Hub) WithScope(f func(scope *Scope))
- type Integration
- type Level
- type Request
- type Scope
- func (scope *Scope) AddBreadcrumb(breadcrumb *Breadcrumb, limit int)
- func (scope *Scope) AddEventProcessor(processor EventProcessor)
- func (scope *Scope) ApplyToEvent(event *Event, hint *EventHint) *Event
- func (scope *Scope) Clear()
- func (scope *Scope) ClearBreadcrumbs()
- func (scope *Scope) Clone() *Scope
- func (scope *Scope) RemoveContext(key string)
- func (scope *Scope) RemoveExtra(key string)
- func (scope *Scope) RemoveTag(key string)
- func (scope *Scope) SetContext(key string, value interface{})
- func (scope *Scope) SetContexts(contexts map[string]interface{})
- func (scope *Scope) SetExtra(key string, value interface{})
- func (scope *Scope) SetExtras(extra map[string]interface{})
- func (scope *Scope) SetFingerprint(fingerprint []string)
- func (scope *Scope) SetLevel(level Level)
- func (scope *Scope) SetRequest(request Request)
- func (scope *Scope) SetTag(key, value string)
- func (scope *Scope) SetTags(tags map[string]string)
- func (scope *Scope) SetUser(user User)
- type SdkInfo
- type SdkPackage
- type Stacktrace
- type Thread
- type Transport
- type User
Constants ¶
const HubContextKey = contextKey(1)
HubContextKey is a context key used to store Hub on any context.Context type
const RequestContextKey = contextKey(2)
RequestContextKey is a context key used to store http.Request on the context passed to RecoverWithContext
const Version = "0.0.1-beta.3"
Version Sentry-Go SDK Version
Variables ¶
Logger is an instance of log.Logger that is use to provide debug information about running Sentry Client can be enabled by either using `Logger.SetOutput` directly or with `Debug` client option
Functions ¶
func AddBreadcrumb ¶
func AddBreadcrumb(breadcrumb *Breadcrumb)
AddBreadcrumb records a new breadcrumb.
The total number of breadcrumbs that can be recorded are limited by the configuration on the client.
func AddGlobalEventProcessor ¶
func AddGlobalEventProcessor(processor EventProcessor)
func ConfigureScope ¶
func ConfigureScope(f func(scope *Scope))
ConfigureScope invokes a function that can modify the current scope.
The function is passed a mutable reference to the `Scope` so that modifications can be performed.
func Flush ¶
Flush notifies when all the buffered events have been sent by returning `true` or `false` if timeout was reached.
func HasHubOnContext ¶
HasHubOnContext checks whether `Hub` instance is bound to a given `Context` struct.
func Init ¶
func Init(options ClientOptions) error
Init initializes whole SDK by creating new `Client` and binding it to the current `Hub`
func SetHubOnContext ¶
SetHubOnContext stores given `Hub` instance on the `Context` struct and returns a new `Context`.
func WithScope ¶
func WithScope(f func(scope *Scope))
WithScope temporarily pushes a scope for a single call.
This function takes one argument, a callback that executes in the context of that scope.
This is useful when extra data should be send with a single capture call for instance a different level or tags
Types ¶
type Breadcrumb ¶
type Breadcrumb struct { Category string `json:"category,omitempty"` Data map[string]interface{} `json:"data,omitempty"` Level Level `json:"level,omitempty"` Message string `json:"message,omitempty"` Timestamp int64 `json:"timestamp,omitempty"` Type string `json:"type,omitempty"` }
https://docs.sentry.io/development/sdk-dev/interfaces/breadcrumbs/
type BreadcrumbHint ¶
type BreadcrumbHint map[string]interface{}
TODO: This type could be more useful, as map of interface{} is too generic and requires a lot of type assertions in beforeBreadcrumb calls plus it could just be `map[string]interface{}` then
type Client ¶
type Client struct { Transport Transport // contains filtered or unexported fields }
Client is the underlying processor that's used by the main API and `Hub` instances.
func NewClient ¶
func NewClient(options ClientOptions) (*Client, error)
NewClient creates and returns an instance of `Client` configured using `ClientOptions`.
func (*Client) AddEventProcessor ¶
func (client *Client) AddEventProcessor(processor EventProcessor)
AddEventProcessor adds an event processor to the client.
func (*Client) CaptureEvent ¶
func (client *Client) CaptureEvent(event *Event, hint *EventHint, scope EventModifier) *EventID
CaptureEvent captures an event on the currently active client if any.
The event must already be assembled. Typically code would instead use the utility methods like `CaptureException`. The return value is the event ID. In case Sentry is disabled or event was dropped, the return value will be nil.
func (*Client) CaptureException ¶
func (client *Client) CaptureException(exception error, hint *EventHint, scope EventModifier) *EventID
CaptureException captures an error.
func (*Client) CaptureMessage ¶
func (client *Client) CaptureMessage(message string, hint *EventHint, scope EventModifier) *EventID
CaptureMessage captures an arbitrary message.
func (*Client) Flush ¶
Flush notifies when all the buffered events have been sent by returning `true` or `false` if timeout was reached. It calls `Flush` method of the configured `Transport`.
func (Client) Options ¶
func (client Client) Options() ClientOptions
Options return `ClientOptions` for the current `Client`.
func (*Client) Recover ¶
func (client *Client) Recover(err interface{}, hint *EventHint, scope EventModifier) *EventID
Recover captures a panic. Returns `EventID` if successfully, or `nil` if there's no error to recover from.
func (*Client) RecoverWithContext ¶
func (client *Client) RecoverWithContext( ctx context.Context, err interface{}, hint *EventHint, scope EventModifier, ) *EventID
Recover captures a panic and passes relevant context object. Returns `EventID` if successfully, or `nil` if there's no error to recover from.
type ClientOptions ¶
type ClientOptions struct { // The DSN to use. If not set the client is effectively disabled. Dsn string // In debug mode debug information is printed to stdput to help you understand what // sentry is doing. Debug bool // Configures whether SDK should generate and attach stacktraces to pure capture message calls. AttachStacktrace bool // The sample rate for event submission (0.0 - 1.0, defaults to 1.0). SampleRate float32 // List of regexp strings that will be used to match against event's message // and if applicable, caught errors type and value. // If the match is found, then a whole event will be dropped. IgnoreErrors []string // Before send callback. BeforeSend func(event *Event, hint *EventHint) *Event // Before breadcrumb add callback. BeforeBreadcrumb func(breadcrumb *Breadcrumb, hint *BreadcrumbHint) *Breadcrumb // Integrations to be installed on the current Client, receives default integrations Integrations func([]Integration) []Integration // io.Writer implementation that should be used with the `Debug` mode DebugWriter io.Writer // The transport to use. // This is an instance of a struct implementing `Transport` interface. // Defaults to `httpTransport` from `transport.go` Transport Transport // The server name to be reported. ServerName string // The release to be sent with events. Release string // The dist to be sent with events. Dist string // The environment to be sent with events. Environment string // Maximum number of breadcrumbs. MaxBreadcrumbs int // An optional size of the transport buffer. Defaults to 30. BufferSize int // An optional pointer to `http.Transport` that will be used with a default HTTPTransport. HTTPTransport *http.Transport // An optional HTTP proxy to use. // This will default to the `http_proxy` environment variable. // or `https_proxy` if that one exists. HTTPProxy string // An optional HTTPS proxy to use. // This will default to the `HTTPS_PROXY` environment variable // or `http_proxy` if that one exists. HTTPSProxy string // An optionsl CaCerts to use. // Defaults to `gocertifi.CACerts()`. CaCerts *x509.CertPool }
ClientOptions that configures a SDK Client
type Dsn ¶
type Dsn struct {
// contains filtered or unexported fields
}
Dsn is used as the remote address source to client transport.
func NewDsn ¶
NewDsn creates an instance od `Dsn` by parsing provided url in a `string` format. If Dsn is not set the client is effectively disabled.
func (Dsn) MarshalJSON ¶
func (Dsn) RequestHeaders ¶
RequestHeaders returns all the necessary headers that have to be used in the transport.
func (Dsn) StoreAPIURL ¶
StoreAPIURL returns assembled url to be used in the transport. It points to configures Sentry instance.
func (*Dsn) UnmarshalJSON ¶
type DsnParseError ¶
type DsnParseError struct {
Message string
}
func (DsnParseError) Error ¶
func (e DsnParseError) Error() string
type Event ¶
type Event struct { Breadcrumbs []*Breadcrumb `json:"breadcrumbs,omitempty"` Contexts map[string]interface{} `json:"contexts,omitempty"` Dist string `json:"dist,omitempty"` Environment string `json:"environment,omitempty"` EventID EventID `json:"event_id,omitempty"` Extra map[string]interface{} `json:"extra,omitempty"` Fingerprint []string `json:"fingerprint,omitempty"` Level Level `json:"level,omitempty"` Message string `json:"message,omitempty"` Platform string `json:"platform,omitempty"` Release string `json:"release,omitempty"` Sdk SdkInfo `json:"sdk,omitempty"` ServerName string `json:"server_name,omitempty"` Threads []Thread `json:"threads,omitempty"` Tags map[string]string `json:"tags,omitempty"` Timestamp int64 `json:"timestamp,omitempty"` Transaction string `json:"transaction,omitempty"` User User `json:"user,omitempty"` Logger string `json:"logger,omitempty"` Modules map[string]string `json:"modules,omitempty"` Request Request `json:"request,omitempty"` Exception []Exception `json:"exception,omitempty"` }
type EventID ¶
type EventID string
func CaptureEvent ¶
CaptureEvent captures an event on the currently active client if any.
The event must already be assembled. Typically code would instead use the utility methods like `CaptureException`. The return value is the event ID. In case Sentry is disabled or event was dropped, the return value will be nil.
func CaptureException ¶
CaptureException captures an error.
func CaptureMessage ¶
CaptureMessage captures an arbitrary message.
func RecoverWithContext ¶
Recover captures a panic and passes relevant context object.
type EventModifier ¶
type EventProcessor ¶
type Exception ¶
type Exception struct { Type string `json:"type,omitempty"` Value string `json:"value,omitempty"` Module string `json:"module,omitempty"` Stacktrace *Stacktrace `json:"stacktrace,omitempty"` RawStacktrace *Stacktrace `json:"raw_stacktrace,omitempty"` }
https://docs.sentry.io/development/sdk-dev/interfaces/exception/
type Frame ¶
type Frame struct { Function string `json:"function,omitempty"` Symbol string `json:"symbol,omitempty"` Module string `json:"module,omitempty"` Package string `json:"package,omitempty"` Filename string `json:"filename,omitempty"` AbsPath string `json:"abs_path,omitempty"` Lineno int `json:"lineno,omitempty"` Colno int `json:"colno,omitempty"` PreContext []string `json:"pre_context,omitempty"` ContextLine string `json:"context_line,omitempty"` PostContext []string `json:"post_context,omitempty"` InApp bool `json:"in_app,omitempty"` Vars map[string]interface{} `json:"vars,omitempty"` }
https://docs.sentry.io/development/sdk-dev/interfaces/stacktrace/
type Hub ¶
type Hub struct {
// contains filtered or unexported fields
}
Hub is the central object that can manages scopes and clients.
This can be used to capture events and manage the scope. The default hub that is available automatically.
In most situations developers do not need to interface the hub. Instead toplevel convenience functions are exposed that will automatically dispatch to global (`CurrentHub`) hub. In some situations this might not be possible in which case it might become necessary to manually work with the hub. This is for instance the case when working with async code.
func CurrentHub ¶
func CurrentHub() *Hub
CurrentHub returns an instance of previously initialized `Hub` stored in the global namespace.
func GetHubFromContext ¶
GetHubFromContext tries to retrieve `Hub` instance from the given `Context` struct or return `nil` if one is not found.
func (*Hub) AddBreadcrumb ¶
func (hub *Hub) AddBreadcrumb(breadcrumb *Breadcrumb, hint *BreadcrumbHint)
AddBreadcrumb records a new breadcrumb.
The total number of breadcrumbs that can be recorded are limited by the configuration on the client.
func (*Hub) BindClient ¶
BindClient binds a new `Client` for the current `Hub`.
func (*Hub) CaptureEvent ¶
CaptureEvent calls the method of a same name on currently bound `Client` instance passing it a top-level `Scope`. Returns `EventID` if successfully, or `nil` if there's no `Scope` or `Client` available.
func (*Hub) CaptureException ¶
CaptureException calls the method of a same name on currently bound `Client` instance passing it a top-level `Scope`. Returns `EventID` if successfully, or `nil` if there's no `Scope` or `Client` available.
func (*Hub) CaptureMessage ¶
CaptureMessage calls the method of a same name on currently bound `Client` instance passing it a top-level `Scope`. Returns `EventID` if successfully, or `nil` if there's no `Scope` or `Client` available.
func (*Hub) Client ¶
Scope returns top-level `Client` of the current `Hub` or `nil` if no `Client` is bound.
func (*Hub) Clone ¶
Clone returns a copy of the current Hub with top-most scope and client copied over.
func (*Hub) ConfigureScope ¶
ConfigureScope invokes a function that can modify the current scope.
The function is passed a mutable reference to the `Scope` so that modifications can be performed.
func (*Hub) LastEventID ¶
LastEventID returns an ID of last captured event for the current `Hub`.
func (*Hub) PopScope ¶
func (hub *Hub) PopScope()
PushScope pops the most recent scope for the current `Hub`.
func (*Hub) PushScope ¶
PushScope pushes a new scope for the current `Hub` and reuses previously bound `Client`.
func (*Hub) Recover ¶
Recover calls the method of a same name on currently bound `Client` instance passing it a top-level `Scope`. Returns `EventID` if successfully, or `nil` if there's no `Scope` or `Client` available.
func (*Hub) RecoverWithContext ¶
RecoverWithContext calls the method of a same name on currently bound `Client` instance passing it a top-level `Scope`. Returns `EventID` if successfully, or `nil` if there's no `Scope` or `Client` available.
type Integration ¶
Integration allows for registering a functions that modify or discard captured events.
type Request ¶
type Request struct { URL string `json:"url,omitempty"` Method string `json:"method,omitempty"` Data string `json:"data,omitempty"` QueryString string `json:"query_string,omitempty"` Cookies string `json:"cookies,omitempty"` Headers map[string]string `json:"headers,omitempty"` Env map[string]string `json:"env,omitempty"` }
type Scope ¶
type Scope struct {
// contains filtered or unexported fields
}
Scope holds contextual data for the current scope.
The scope is an object that can cloned efficiently and stores data that is locally relevant to an event. For instance the scope will hold recorded breadcrumbs and similar information.
The scope can be interacted with in two ways:
- the scope is routinely updated with information by functions such as `AddBreadcrumb` which will modify the currently top-most scope.
- the topmost scope can also be configured through the `ConfigureScope` method.
Note that the scope can only be modified but not inspected. Only the client can use the scope to extract information currently.
func (*Scope) AddBreadcrumb ¶
func (scope *Scope) AddBreadcrumb(breadcrumb *Breadcrumb, limit int)
AddBreadcrumb adds new breadcrumb to the current scope and optionaly throws the old one if limit is reached.
func (*Scope) AddEventProcessor ¶
func (scope *Scope) AddEventProcessor(processor EventProcessor)
AddEventProcessor adds an event processor to the current scope.
func (*Scope) ApplyToEvent ¶
ApplyToEvent takes the data from the current scope and attaches it to the event.
func (*Scope) ClearBreadcrumbs ¶
func (scope *Scope) ClearBreadcrumbs()
ClearBreadcrumbs clears all breadcrumbs from the current scope.
func (*Scope) RemoveContext ¶
RemoveContext removes a context from the current scope.
func (*Scope) RemoveExtra ¶
RemoveExtra removes a extra from the current scope.
func (*Scope) SetContext ¶
SetContext adds a context to the current scope.
func (*Scope) SetContexts ¶
SetContexts assigns multiple contexts to the current scope.
func (*Scope) SetFingerprint ¶
SetFingerprint sets new fingerprint for the current scope.
func (*Scope) SetRequest ¶
SetRequest sets new user for the current scope.
type SdkInfo ¶
type SdkInfo struct { Name string `json:"name,omitempty"` Version string `json:"version,omitempty"` Integrations []string `json:"integrations,omitempty"` Packages []SdkPackage `json:"packages,omitempty"` }
type SdkPackage ¶
type Stacktrace ¶
type Stacktrace struct { Frames []Frame `json:"frames,omitempty"` FramesOmitted []uint `json:"frames_omitted,omitempty"` }
Stacktrace holds information about the frames of the stack.
func ExtractStacktrace ¶
func ExtractStacktrace(err error) *Stacktrace
ExtractStacktrace creates a new `Stacktrace` based on the given `error` object. TODO: Make it configurable so that anyone can provide their own implementation? Use of reflection allows us to not have a hard dependency on any given package, so we don't have to import it
func NewStacktrace ¶
func NewStacktrace() *Stacktrace
NewStacktrace creates a stacktrace using `runtime.Callers`.
type Thread ¶
type Thread struct { ID string `json:"id,omitempty"` Name string `json:"name,omitempty"` Stacktrace *Stacktrace `json:"stacktrace,omitempty"` RawStacktrace *Stacktrace `json:"raw_stacktrace,omitempty"` Crashed bool `json:"crashed,omitempty"` Current bool `json:"current,omitempty"` }