Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Set log level for Fetch/XHR breadcrumbs based on status code #13711

Merged
merged 9 commits into from
Sep 23, 2024

Conversation

Zen-cronic
Copy link
Contributor

@Zen-cronic Zen-cronic commented Sep 18, 2024

Fixes #13359

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

* @param breadcrumb
*/
export function assignBreadcrumbLogLevel(breadcrumb: Breadcrumb): Breadcrumb {
const statusCode = breadcrumb.data?.status_code;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FetchBreadcrumbData and XhrBreadcrumbData are sent as the data property, which optionally contains status_code.

Copy link
Member

@Lms24 Lms24 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey, thanks for (once again) contributing! :)

On first glance, this looks great to me! Would be amazing if you could add some tests for this. I think we should be able to test this in our Node integration-tests fairly well. (as well as maybe a couple of unit tests for the assignBreadcrumbLogLevel if you feel like doing extra credit work 😅)

I'm also gonna tag @lforst for a review since he has more context on this issue.

@Lms24 Lms24 requested a review from lforst September 18, 2024 07:12
Copy link
Member

@lforst lforst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would set the level in the place where we actually create the breadcrumbs, not in a central place downstream.

} else if (statusCode >= 500) {
return 'error';
} else {
return 'info';
Copy link
Contributor Author

@Zen-cronic Zen-cronic Sep 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the undefined and other cases, the fallback level is info. So, all the test cases for breadcrumbs in browser-integration-tests must be updated, which is quite a lot.

Is this behaviour needed? E.g., non-error request breadcrumb will have an additional property level: 'info'

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently many tests are failing b/c of the default property. Maybe we shouldn't set it if the response has a non-error status code. Otherwise, it's a handful to fix those tests (though it's simply just adding the property).

Any thoughts?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For now, i've left out the default value (info) to not break the many other tests. But other sdks use a default value: getsentry/sentry-php@d12482a. So we should consider it.

Modify `getBreadcrumbLogLevel` to account only for 4xx or 5xx status.
Tests updated to reflect the changes to `getBreadcrumbLogLevel` function.

Signed-off-by: Kaung Zin Hein <[email protected]>
@lforst lforst self-assigned this Sep 23, 2024
@lforst lforst changed the title fix(core): Set log level for Fetch/XHR breadcrumbs based on status code feat: Set log level for Fetch/XHR breadcrumbs based on status code Sep 23, 2024
Copy link
Member

@lforst lforst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you! :)

@lforst lforst merged commit 1f898b6 into getsentry:develop Sep 23, 2024
125 checks passed
mydea pushed a commit that referenced this pull request Sep 24, 2024
This PR adds the external contributor to the CHANGELOG.md file, so that
they are credited for their contribution. See #13711

Co-authored-by: lforst <[email protected]>
alexandresoro pushed a commit to alexandresoro/ouca that referenced this pull request Sep 25, 2024
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [@sentry/node](https://github.com/getsentry/sentry-javascript/tree/master/packages/node) ([source](https://github.com/getsentry/sentry-javascript)) | dependencies | minor | [`8.31.0` -> `8.32.0`](https://renovatebot.com/diffs/npm/@sentry%2fnode/8.31.0/8.32.0) |
| [@sentry/react](https://github.com/getsentry/sentry-javascript/tree/master/packages/react) ([source](https://github.com/getsentry/sentry-javascript)) | dependencies | minor | [`8.31.0` -> `8.32.0`](https://renovatebot.com/diffs/npm/@sentry%2freact/8.31.0/8.32.0) |

---

### Release Notes

<details>
<summary>getsentry/sentry-javascript (@&#8203;sentry/node)</summary>

### [`v8.32.0`](https://github.com/getsentry/sentry-javascript/releases/tag/8.32.0)

[Compare Source](getsentry/sentry-javascript@8.31.0...8.32.0)

##### Important Changes

-   **ref(browser): Move navigation span descriptions into op ([#&#8203;13527](getsentry/sentry-javascript#13527

Moves the description of navigation related browser spans into the op, e.g. browser - cache -> browser.cache and sets
the description to the performanceEntry objects' names (in this context it is the URL of the page).

-   **feat(node): Add amqplibIntegration ([#&#8203;13714](getsentry/sentry-javascript#13714

-   **feat(nestjs): Add `SentryGlobalGenericFilter` and allow specifying application ref in global filter ([#&#8203;13673](getsentry/sentry-javascript#13673

Adds a `SentryGlobalGenericFilter` that filters both graphql and http exceptions depending on the context.

-   **feat: Set log level for Fetch/XHR breadcrumbs based on status code ([#&#8203;13711](getsentry/sentry-javascript#13711

Sets log levels in breadcrumbs for 5xx to error and 4xx to warning.

##### Other Changes

-   chore(nextjs): Bump rollup to 3.29.5 ([#&#8203;13761](getsentry/sentry-javascript#13761))
-   fix(core): Remove `sampled` flag from dynamic sampling context in Tracing without Performance mode ([#&#8203;13753](getsentry/sentry-javascript#13753))
-   fix(node): Ensure node-fetch does not emit spans without tracing ([#&#8203;13765](getsentry/sentry-javascript#13765))
-   fix(nuxt): Use Nuxt error hooks instead of errorHandler to prevent 500 ([#&#8203;13748](getsentry/sentry-javascript#13748))
-   fix(test): Unflake LCP test ([#&#8203;13741](getsentry/sentry-javascript#13741))

Work in this release was contributed by [@&#8203;Zen-cronic](https://github.com/Zen-cronic) and [@&#8203;Sjoertjuh](https://github.com/Sjoertjuh). Thank you for your contributions!

##### Bundle size 📦

| Path                                                             | Size              |
| ---------------------------------------------------------------- | ----------------- |
| [@&#8203;sentry/browser](https://github.com/sentry/browser)                                                  | 22.63 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) - with treeshaking flags                         | 21.42 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing)                                  | 34.86 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay)                          | 71.36 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay) - with treeshaking flags | 61.79 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay with Canvas)              | 75.71 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay, Feedback)                | 88.48 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay, Feedback, metrics)       | 90.36 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. metrics)                                  | 26.91 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Feedback)                                 | 39.77 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. sendFeedback)                             | 27.29 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. FeedbackAsync)                            | 32.08 KB  |
| [@&#8203;sentry/react](https://github.com/sentry/react)                                                    | 25.38 KB  |
| [@&#8203;sentry/react](https://github.com/sentry/react) (incl. Tracing)                                    | 37.84 KB  |
| [@&#8203;sentry/vue](https://github.com/sentry/vue)                                                      | 26.8 KB   |
| [@&#8203;sentry/vue](https://github.com/sentry/vue) (incl. Tracing)                                      | 36.75 KB  |
| [@&#8203;sentry/svelte](https://github.com/sentry/svelte)                                                   | 22.76 KB  |
| CDN Bundle                                                       | 23.94 KB  |
| CDN Bundle (incl. Tracing)                                       | 36.63 KB  |
| CDN Bundle (incl. Tracing, Replay)                               | 71.13 KB  |
| CDN Bundle (incl. Tracing, Replay, Feedback)                     | 76.44 KB  |
| CDN Bundle - uncompressed                                        | 70.14 KB  |
| CDN Bundle (incl. Tracing) - uncompressed                        | 108.6 KB  |
| CDN Bundle (incl. Tracing, Replay) - uncompressed                | 220.48 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed      | 233.69 KB |
| [@&#8203;sentry/nextjs](https://github.com/sentry/nextjs) (client)                                          | 37.8 KB   |
| [@&#8203;sentry/sveltekit](https://github.com/sentry/sveltekit) (client)                                       | 35.43 KB  |
| [@&#8203;sentry/node](https://github.com/sentry/node)                                                     | 124.92 KB |
| [@&#8203;sentry/node](https://github.com/sentry/node) - without tracing                                   | 93.57 KB  |
| [@&#8203;sentry/aws-serverless](https://github.com/sentry/aws-serverless)                                           | 103.28 KB |

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC45NC4zIiwidXBkYXRlZEluVmVyIjoiMzguOTQuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->

Reviewed-on: https://git.tristess.app/alexandresoro/ouca/pulls/161
Reviewed-by: Alexandre Soro <[email protected]>
Co-authored-by: renovate <[email protected]>
Co-committed-by: renovate <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Give Fetch/XHR breadcrumbs a log level based on status code
3 participants