diff --git a/zerolog/README.md b/zerolog/README.md new file mode 100644 index 000000000..18e4b0d08 --- /dev/null +++ b/zerolog/README.md @@ -0,0 +1,88 @@ +

+ + + +
+

+ +# Official Sentry Zerolog Writer for Sentry-Go SDK + +**Go.dev Documentation:** https://pkg.go.dev/github.com/getsentry/sentryzerolog +**Example Usage:** https://github.com/getsentry/sentry-go/tree/master/_examples/zerolog + +## Overview + +This package provides a writer for the [Zerolog](https://github.com/rs/zerolog) logger, enabling seamless integration with [Sentry](https://sentry.io). With this writer, logs at specific levels can be captured as Sentry events, while others can be added as breadcrumbs for enhanced context. + +## Installation + +```sh +go get github.com/getsentry/sentry-go/zerolog +``` + +## Usage + +```go +package main + +import ( + "time" + + "github.com/rs/zerolog" + "github.com/getsentry/sentry-go" + sentryzerolog "github.com/getsentry/sentry-go/zerolog" +) + +func main() { + // Initialize Sentry + err := sentry.Init(sentry.ClientOptions{ + Dsn: "your-public-dsn", + }) + if err != nil { + panic(err) + } + defer sentry.Flush(2 * time.Second) + + // Configure Sentry Zerolog Writer + writer, err := sentryzerolog.New(sentryzerolog.Config{ + ClientOptions: sentry.ClientOptions{ + Dsn: "your-public-dsn", + Debug: true, + }, + Options: sentryzerolog.Options{ + Levels: []zerolog.Level{zerolog.ErrorLevel, zerolog.FatalLevel}, + FlushTimeout: 3 * time.Second, + WithBreadcrumbs: true, + }, + }) + if err != nil { + panic(err) + } + defer writer.Close() + + // Initialize Zerolog + logger := zerolog.New(writer).With().Timestamp().Logger() + + // Example Logs + logger.Info().Msg("This is an info message") // Breadcrumb + logger.Error().Msg("This is an error message") // Captured as an event + logger.Fatal().Msg("This is a fatal message") // Captured as an event and flushes +} +``` + +## Configuration + +The `sentryzerolog.New` function accepts a `sentryzerolog.Config` struct, which allows for the following configuration options: + +- `ClientOptions`: A struct of `sentry.ClientOptions` that allows you to configure how the Sentry client will behave. +- `Options`: A struct of `sentryzerolog.Options` that allows you to configure how the Sentry Zerolog writer will behave. + +The `sentryzerolog.Options` struct allows you to configure the following: + +- `Levels`: An array of `zerolog.Level` that defines which log levels should be sent to Sentry. +- `FlushTimeout`: A `time.Duration` that defines how long to wait before flushing events. +- `WithBreadcrumbs`: A `bool` that enables or disables adding logs as breadcrumbs for contextual logging. Non-event logs will appear as breadcrumbs in Sentry. + +## Notes + +- Always call Flush to ensure all events are sent to Sentry before program termination \ No newline at end of file