{"componentChunkName":"component---src-templates-platform-tsx","path":"/platforms/java/guides/logback/enriching-events/breadcrumbs/","result":{"data":{"file":{"id":"8be60235-eeff-59cf-aa52-779d87e472ae","relativePath":"common/enriching-events/breadcrumbs.mdx","sourceInstanceName":"platforms","childMarkdownRemark":null,"childMdx":{"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Breadcrumbs\",\n  \"sidebar_order\": 102,\n  \"description\": \"Learn more about what Sentry uses to create a trail of events (breadcrumbs) that happened prior to an issue.\",\n  \"notSupported\": [\"native.breakpad\", \"native.crashpad\", \"native.minidumps\", \"native.ue4\"]\n};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar Alert = makeShortcode(\"Alert\");\nvar PlatformContent = makeShortcode(\"PlatformContent\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Sentry uses \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"breadcrumbs\"), \" to create a trail of events that happened prior to an issue. These events are very similar to traditional logs, but can record more rich structured data.\"), mdx(\"p\", null, \"This page provides an overview of manual breadcrumb recording and customization. Learn more about the information that displays on the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Issue Details\"), \" page and how you can filter breadcrumbs to quickly resolve issues in \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"/product/error-monitoring/breadcrumbs\"\n  }), \"Using Breadcrumbs\"), \".\"), mdx(Alert, {\n    level: \"\",\n    title: \"Learn about SDK usage\",\n    mdxType: \"Alert\"\n  }, mdx(\"markdown\", null, mdx(\"p\", null, \"Developers who want to modify the breadcrumbs interface can read about this in detail using the developer documentation devoted to the \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://develop.sentry.dev/sdk/event-payloads/breadcrumbs/\"\n  }), \"Breadcrumbs Interface\"), \".\"))), mdx(\"h2\", {\n    \"id\": \"manual-breadcrumbs\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#manual-breadcrumbs\",\n    \"aria-label\": \"manual breadcrumbs permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Manual Breadcrumbs\"), mdx(\"p\", null, \"You can manually add breadcrumbs whenever something interesting happens. For example, you might manually record a breadcrumb if the user authenticates or another state change happens.\"), mdx(PlatformContent, {\n    includePath: \"breadcrumbs-example\",\n    mdxType: \"PlatformContent\"\n  }), mdx(\"h2\", {\n    \"id\": \"automatic-breadcrumbs\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#automatic-breadcrumbs\",\n    \"aria-label\": \"automatic breadcrumbs permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Automatic Breadcrumbs\"), mdx(\"p\", null, \"SDKs will automatically start recording breadcrumbs by enabling integrations. For instance, the browser JavaScript SDK will automatically record all location changes.\"), mdx(PlatformContent, {\n    includePath: \"before-breadcrumb\",\n    mdxType: \"PlatformContent\"\n  }, mdx(\"markdown\", null, mdx(\"h2\", {\n    \"id\": \"customize-breadcrumbs\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#customize-breadcrumbs\",\n    \"aria-label\": \"customize breadcrumbs permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Customize Breadcrumbs\"), mdx(\"p\", null, \"SDKs customize breadcrumbs through the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"before_breadcrumb\"), \" hook. This hook passes an already assembled breadcrumb and, in some SDKs, an optional\\nhint. The function can modify the breadcrumb or decide to discard it entirely:\"), mdx(\"p\", null, \"For information about what can be done with the hint see \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"../../configuration/filtering/#before-breadcrumb\"\n  }), \"Filtering Events\"), \".\"))), mdx(\"h2\", {\n    \"id\": \"next-steps\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#next-steps\",\n    \"aria-label\": \"next steps permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"viewBox\": \"0 0 24 24\",\n    \"xmlns\": \"http://www.w3.org/2000/svg\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10.879 6.05L15 1.93A5.001 5.001 0 0 1 22.071 9l-4.121 4.121a1 1 0 0 1-1.414-1.414l4.12-4.121a3 3 0 1 0-4.242-4.243l-4.121 4.121a1 1 0 1 1-1.414-1.414zm2.242 11.9L9 22.07A5 5 0 1 1 1.929 15l4.121-4.121a1 1 0 0 1 1.414 1.414l-4.12 4.121a3 3 0 1 0 4.242 4.243l4.121-4.121a1 1 0 1 1 1.414 1.414zm-8.364-.122l13.071-13.07a1 1 0 0 1 1.415 1.414L6.172 19.242a1 1 0 1 1-1.415-1.414z\",\n    \"fill\": \"currentColor\"\n  })))), \"Next Steps:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"../../\"\n  }), \"Return to \", mdx(\"strong\", {\n    parentName: \"a\"\n  }, \"Getting Started\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"../\"\n  }), \"Return to the main enriching event data page\"))));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#manual-breadcrumbs","title":"Manual Breadcrumbs"},{"url":"#automatic-breadcrumbs","title":"Automatic Breadcrumbs"},{"url":"#customize-breadcrumbs","title":"Customize Breadcrumbs"},{"url":"#next-steps","title":"Next Steps:"}]},"internal":{"type":"Mdx"}}}},"pageContext":{"excerpt":"Sentry uses  breadcrumbs  to create a trail of events that happened prior to an issue. These events are very similar to traditional logs, but can record more rich structured data. This page provides an overview of manual breadcrumb recording and customization. Learn more about the information that displays on the  Issue Details  page and how you can filter breadcrumbs to quickly resolve issues in  Using Breadcrumbs . Developers who want to modify the breadcrumbs interface can read about this in detail using the developer documentation devoted to the  Breadcrumbs Interface . Manual Breadcrumbs You can manually add breadcrumbs whenever something interesting happens. For example, you might manually record a breadcrumb if the user authenticates or another state change happens. Automatic Breadcrumbs SDKs will automatically start recording breadcrumbs by enabling integrations. For instance, the browser JavaScript SDK will automatically record all location changes. Customize Breadcrumbs SDKs customize breadcrumbs through the  before_breadcrumb  hook. This hook passes an already assembled breadcrumb and, in some SDKs, an optional\nhint. The function can modify the breadcrumb or decide to discard it entirely: For information about what can be done with the hint see  Filtering Events . Next Steps: Return to  Getting Started Return to the main enriching event data page","title":"Breadcrumbs","description":"Learn more about what Sentry uses to create a trail of events (breadcrumbs) that happened prior to an issue.","sidebar_order":102,"notSupported":["native.breakpad","native.crashpad","native.minidumps","native.ue4"],"platform":{"name":"java","title":"Java"},"guide":{"name":"logback","title":"Logback"},"noindex":true,"notoc":true,"redirect_from":[],"id":"8be60235-eeff-59cf-aa52-779d87e472ae"}},"staticQueryHashes":["1218203755","1222113826","1222113826","1766336459","2158593473","2404336828","2472290386","2764967025","3818502851","4015007367","4192517163","4264099332","518019976"]}