import {Fragment} from 'react'; import ExternalLink from 'sentry/components/links/externalLink'; import {Layout, LayoutProps} from 'sentry/components/onboarding/gettingStartedDoc/layout'; import {ModuleProps} from 'sentry/components/onboarding/gettingStartedDoc/sdkDocumentation'; import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/step'; import {t, tct} from 'sentry/locale'; interface StepProps { dsn: string; organizationSlug?: string; projectSlug?: string; sourcePackageRegistries?: ModuleProps['sourcePackageRegistries']; } // Configuration Start const introduction = (

{tct( 'The sentry-logback library provides Logback support for Sentry using an [link:Appender] that sends logged exceptions to Sentry.', { link: ( ), } )}

); export const steps = ({ dsn, sourcePackageRegistries, projectSlug, organizationSlug, }: StepProps): LayoutProps['steps'] => [ { type: StepType.INSTALL, description: t( "Install Sentry's integration with Logback using either Maven or Gradle:" ), configurations: [ { description:
{t('Maven')}
, configurations: [ { language: 'xml', partialLoading: sourcePackageRegistries?.isLoading, code: ` io.sentry sentry-logback ${ sourcePackageRegistries?.isLoading ? t('\u2026loading') : sourcePackageRegistries?.data?.['sentry.java.logback']?.version ?? '6.27.0' } `, }, { language: 'xml', partialLoading: sourcePackageRegistries?.isLoading, description: t( 'To upload your source code to Sentry so it can be shown in stack traces, use our Maven plugin.' ), code: ` io.sentry sentry-maven-plugin ${ sourcePackageRegistries?.isLoading ? t('\u2026loading') : sourcePackageRegistries?.data?.['sentry.java.mavenplugin']?.version ?? '0.0.3' } true /path/to/sentry-cli ${organizationSlug} ${projectSlug} env.SENTRY_AUTH_TOKEN generate-resources uploadSourceBundle ... `, }, ], }, { description:
{t('Graddle')}
, configurations: [ { language: 'groovy', partialLoading: sourcePackageRegistries?.isLoading, code: `implementation 'io.sentry:sentry-logback:${ sourcePackageRegistries?.isLoading ? t('\u2026loading') : sourcePackageRegistries?.data?.['sentry.java.logback']?.version ?? '6.27.0' }'`, }, { description: t( 'To upload your source code to Sentry so it can be shown in stack traces, use our Maven plugin.' ), language: 'groovy', partialLoading: sourcePackageRegistries?.isLoading, code: ` buildscript { repositories { mavenCentral() } } plugins { id "io.sentry.jvm.gradle" version "${ sourcePackageRegistries?.isLoading ? t('\u2026loading') : sourcePackageRegistries?.data?.['sentry.java.android.gradle-plugin']?.version ?? '3.11.1' }" } sentry { // Generates a JVM (Java, Kotlin, etc.) source bundle and uploads your source code to Sentry. // This enables source context, allowing you to see your source // code as part of your stack traces in Sentry. includeSourceContext = true org = "${organizationSlug}" projectName = "${projectSlug}" authToken = "your-sentry-auth-token" } `, }, ], }, ], additionalInfo: (

{tct('For other dependency managers see the [link:central Maven repository].', { link: ( ), })}

), }, { type: StepType.CONFIGURE, description: t( "Configure Sentry as soon as possible in your application's lifecycle:" ), configurations: [ { language: 'xml', description: t( 'The following example configures a ConsoleAppender that logs to standard out at the INFO level, and a SentryAppender that logs to the Sentry server at the ERROR level. This only an example of a non-Sentry appender set to a different logging threshold, similar to what you may already have in your project.' ), code: ` %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n ${dsn} `, additionalInfo: (

{tct( "You'll also need to configure your DSN (client key) if it's not already in the [code:logback.xml] configuration. Learn more in [link:our documentation for DSN configuration].", { code: , link: ( ), } )}

), }, { description: (

{tct( "Next, you'll need to set your log levels, as illustrated here. You can learn more about [link:configuring log levels] in our documentation.", { link: ( ), } )}

), configurations: [ { language: 'xml', code: ` ${dsn} WARN DEBUG `, }, ], }, ], }, { type: StepType.VERIFY, description: t( 'Last, create an intentional error, so you can test that everything is working:' ), configurations: [ { description:
Java
, language: 'java', code: ` import java.lang.Exception; import io.sentry.Sentry; try { throw new Exception("This is a test."); } catch (Exception e) { Sentry.captureException(e); } `, }, { description:
Kotlin
, language: 'java', code: ` import java.lang.Exception import io.sentry.Sentry try { throw Exception("This is a test.") } catch (e: Exception) { Sentry.captureException(e) } `, }, ], additionalInfo: (

{t( "If you're new to Sentry, use the email alert to access your account and complete a product tour." )}

{t( "If you're an existing user and have disabled alerts, you won't receive this email." )}

), }, ]; // Configuration End export function GettingStartedWithLogBack({ dsn, sourcePackageRegistries, projectSlug, organization, ...props }: ModuleProps) { return ( ); } export default GettingStartedWithLogBack;