hanayo/vendor/github.com/getsentry/raven-go/docs/index.rst
2019-02-23 13:29:15 +00:00

121 lines
3.0 KiB
ReStructuredText

.. sentry:edition:: self
Raven Go
========
.. sentry:edition:: hosted, on-premise
.. class:: platform-go
Go
==
.. sentry:support-warning::
The Go SDK is maintained and supported by Sentry but currently
under development. Learn more about the project on `GitHub
<https://github.com/getsentry/raven-go>`__.
Raven-Go provides a Sentry client implementation for the Go programming
language.
Installation
------------
Raven-Go can be installed like any other Go library through ``go get``::
$ go get github.com/getsentry/raven-go
Configuring the Client
----------------------
To use ``raven-go``, you'll need to import the ``raven`` package, then initilize your
DSN globally. If you specify the ``SENTRY_DSN`` environment variable, this will be
done automatically for you.
.. sourcecode:: go
package main
import "github.com/getsentry/raven-go"
func init() {
raven.SetDSN("___DSN___")
}
Reporting Errors
----------------
In Go, there are both errors and panics, and Raven can handle both. To learn more
about the differences, please read `Error handling and Go <https://blog.golang.org/error-handling-and-go>`_.
To handle normal ``error`` responses, we have two options: ``CaptureErrorAndWait`` and ``CaptureError``. The former is a blocking call, for a case where you'd like to exit the application after reporting, and the latter is non-blocking.
.. sourcecode:: go
f, err := os.Open("filename.ext")
if err != nil {
raven.CaptureErrorAndWait(err, nil)
log.Panic(err)
}
Reporting Panics
----------------
Capturing a panic is pretty simple as well. We just need to wrap our code in ``CapturePanic``. ``CapturePanic`` will execute the ``func`` and if a panic happened, we will record it, and gracefully continue.
.. sourcecode:: go
raven.CapturePanic(func() {
// do all of the scary things here
}, nil)
Additional Context
------------------
All of the ``Capture*`` functions accept an additional argument for passing a ``map`` of tags
as the second argument. For example:
.. sourcecode:: go
raven.CaptureError(err, map[string]string{"browser": "Firefox"})
Tags in Sentry help to categories and give you more information about the errors that happened.
Event Sampling
--------------------
To setup client side sampling you can use ``SetSampleRate`` Client function.
Error sampling is disabled by default (sampleRate=1).
.. sourcecode:: go
package main
import "github.com/getsentry/raven-go"
func init() {
raven.SetSampleRate(0.25)
}
Deep Dive
---------
For more detailed information about how to get the most out of ``raven-go`` there
is additional documentation available that covers all the rest:
.. toctree::
:maxdepth: 2
:titlesonly:
integrations/index
Resources:
* `Bug Tracker <https://github.com/getsentry/raven-go/issues>`_
* `GitHub Project <https://github.com/getsentry/raven-go>`_
* `Godocs <https://godoc.org/github.com/getsentry/raven-go>`_