romariolopezc / elm-sentry / Sentry

Sentry SDK

Types


type alias Sentry =
{ fatal : String -> Dict String Json.Encode.Value -> Task Http.Error UUID
, error : String -> Dict String Json.Encode.Value -> Task Http.Error UUID
, warning : String -> Dict String Json.Encode.Value -> Task Http.Error UUID
, info : String -> Dict String Json.Encode.Value -> Task Http.Error UUID
, debug : String -> Dict String Json.Encode.Value -> Task Http.Error UUID 
}

Record that contains functions to report errors by Level.

Create one using withContext.


type Level
    = Fatal
    | Error
    | Warning
    | Info
    | Debug

The event severity.


type Config

The configuration of the SDK.

Specifies the Public Key, the Host, and the Project ID.

Create one using config.

config : { publicKey : String, host : String, projectId : String } -> Config

Creates a Config.

Use the dsn to provide the publicKey, host and projectId.

The @ character in the DSN separates the PublicKey and the Host.

-- DSN: https://1900942c246350fdacb4c9369cac2ets@o298593.ingest.sentry.io/2312456
--                      ^ PublicKey                       ^ Host           ^ ProjectId
Sentry.config
    { publicKey = "1900942c246350fdacb4c9369cac2ets"
    , host = "o298593.ingest.sentry.io"
    , projectId = "2312456"
    }


type Environment

The environment name, such as "production" or "staging".

Create one using environment.

environment : String -> Environment

Create an Environment.

Sentry.environment "production"


type Context

The Context, for example, the Page name.

Crate one using context.

context : String -> Context

Create a Context.

Sentry.context "profile/settings"


type ReleaseVersion

The release version of the application.

This value can be a git SHA, or a product identifier with a semantic version.

Create one using releaseVersion.

releaseVersion : String -> ReleaseVersion

Create a ReleaseVersion.

Sentry.releaseVersion "721e41770371db95eee98ca2707686226b993eda"

Reporting errors

send : Config -> Level -> ReleaseVersion -> Environment -> Context -> String -> Dict String Json.Encode.Value -> Task Http.Error UUID

Send an error to Sentry.

Normally, it's preferable to use withContext as it provides a reusable configured Sentry.

Arguments:

On success, the Task will resolve to a UUID that was sent to Sentry as the Event ID.

On failure, the Http.Error will hold the information about the problem.

withContext : Config -> ReleaseVersion -> Environment -> String -> Sentry

Build a Sentry record configured with the given Config, ReleaseVersion, an Environment and a Context string.

    import Sentry exposing (Sentry)

    config : Sentry.Config
    config =
        Sentry.config
            { publicKey = "1900942c246350fdacb4c9369cac2ets"
            , host = "o298593.ingest.sentry.io"
            , projectId = "2312456"
            }

    releaseVersion : Sentry.ReleaseVersion
    releaseVersion =
        Sentry.releaseVersion "721e41770371db95eee98ca2707686226b993eda"

    environment : Sentry.Environment
    environment =
        Sentry.environment "production"

    sentry : Sentry
    sentry =
        Sentry.withContext config releaseVersion environment "profile/settings"

    sentry.fatal "Backend on fire!" (Dict.fromList [("response", toString response)])
    sentry.debug "Testing sentry integration" Dict.empty
    sentry.info "Backend timeout when saving the profile settings" Dict.empty