You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: develop-docs/integrations/jira/index.mdx
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,23 +19,28 @@ To enable issue-sync between Jira and a locally hosted Sentry Jira integration,
19
19
## Installing Local Jira App
20
20
21
21
1. If you don't have any projects in your Jira org yet, create a new project.
22
+
22
23
2. In the navigation bar at the top of the screen, click on the waffle icon (1), select the desired organization and click "Administration" (2).
23
24

24
25
25
26
3. In the navigation bar, click "Products" (3) and under "Sites and products" (4) select the appropriate site/product with your Jira project.
26
27

27
28
28
29
4. In the sidebar on the left, click on "Connected apps" (5) and then click on the Settings tab (6).
30
+
29
31
5. Click on the button labeled "Install a private app" (7).
30
32

31
33
32
34
6. In the new modal, select JIRA for the product to install the app on (8).
35
+
33
36
7. For the "App descriptor URL" (9), use the following URL, `https://{YOUR_SENTRY_DOMAIN}/extensions/jira/descriptor/`.
34
37
* Note that if you are running a local devserver, `YOUR_SENTRY_DOMAIN` will be your ngrok (or other tunneling service) domain.
38
+
* You will also need to keep the local devserver to be running
35
39
* For self-hosted Sentry users: Replace `https://{YOUR_SENTRY_DOMAIN}` with your Sentry address.
36
40

37
41
38
42
8. Click "Install app" (10), now if you select the "Installed Apps" (11) tab next to "Settings", you should see your newly installed app listed under "Sentry" (12). (Note: that "Sentry for Jira" is the SaaS integration).
43
+
39
44
9. On the right the newly installed app click on the three dots and then click "Manage" (13).
40
45

Copy file name to clipboardExpand all lines: develop-docs/sdk/telemetry/logs.mdx
+19-29Lines changed: 19 additions & 29 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -89,6 +89,8 @@ It consists of the following fields:
89
89
90
90
: **Object, optional**. A dictionary of key-value pairs of arbitrary data attached to the log. Attributes must also declare the type of the value. The following types are supported: `string`, `boolean`, `integer`, `double`. In the future arrays will be supported (`string[]`, `boolean[]`, `integer[]`, `double[]`).
91
91
92
+
Integers should be a 64-bit signed integer, while doubles should be a 64-bit floating point number. In the future we will support 64-bit unsigned integers.
93
+
92
94
Example:
93
95
94
96
```json
@@ -156,27 +158,6 @@ The SDKs must expose the following configuration options:
156
158
157
159
-`beforeSendLog`/`before_send_log`: A function that takes a log object and returns a log object. This function is called before sending the log to Sentry. It can be used to modify the log object or to prevent the log from being sent to Sentry. This function is optional.
158
160
159
-
-`logsSampleRate`/`logs_sample_rate`: A number between 0 and 1 that represents the probability that a log will be sent to Sentry. This sampling decision should be made before a log is processed by SDK to lower performance overhead. Defaults to 1.0.
160
-
161
-
```js
162
-
Sentry.init({
163
-
enableLogs:true,
164
-
165
-
beforeSendLog(log) {
166
-
// Prevent logs from being sent to Sentry if the plan type is enterprise
167
-
if (log.attributes["plan.type"] ==="enterprise") {
168
-
returnnull;
169
-
}
170
-
171
-
return log;
172
-
},
173
-
174
-
logsSampleRate:1.0,
175
-
});
176
-
```
177
-
178
-
At the current moment logs sampling decisions are not propagated to downstream services, or be affected by the `tracesSampleRate` configuration option. In the future there might be more advanced client-side sampling and server-side sampling strategies, but this is not yet defined.
179
-
180
161
While the logs functionality for an SDK is in an experimental state, SDKs should put these configuration options in an experimental namespace to avoid breaking changes.
181
162
182
163
```js
@@ -279,15 +260,14 @@ It's important to note that putting everything immediately on a background threa
279
260
280
261
The internal SDK implementation is kept purposefully broad as we are still in early stages. As we figure more out about the logs product and payload characteristics, we'll be able to define a more rigorous spec for logging internals in the SDK. SDKs should take care to not expose logging internals as much as possible to userland so that they can be refactored in the future.
281
262
282
-
### Data Category and Rate Limiting
263
+
In general log processing should follow this order:
283
264
284
-
A new data category for logs has been added to Relay, `log_item`. Both the `log` envelope and `otel_log` envelope is covered by this data category. This will need to implemented in the SDK. Rate limiting applies as usual, there is no special rate limit or rate limiting behaviour for logs. With this data category, client outcomes should be tracked by the SDKs to track how often logs are dropped by the SDK.
285
-
286
-
### Buffering
287
-
288
-
Logs should be buffered before being sent. SDKs should keep a buffer of logs on the client (so you can have logs from multiple traces in the buffer) that flushes out based on some kind of condition. We recommend to use follow the [batch processor specification outlined](/sdk/telemetry/spans/batch-processor/) in the develop docs, but you should choose the approach that works best for your platform. When starting intial development on the SDK you can choose a simple approach to buffer like flushing logs if the buffer length exceeds 25 items, or if 5 seconds have passed.
289
-
290
-
SDKS should NOT release logging capabilities to users if a buffering implementation has not been added to their SDK when adding logging APIs.
265
+
1. Capture log via [Public APIs](#logger-module) (e.g. `Sentry.logger.info`) or via [SDK integrations](#sdk-integrations).
266
+
1. Check if logging is enabled as per `enableLogs`/`enable_logs` configuration - if not, skip the rest of the steps.
267
+
1. Process captured log (attach attributes as per [default attributes](#default-attributes)).
268
+
1. Run `beforeSendLog`/`before_send_log` to filter or modify the log.
269
+
1. Add log to buffer/batch processor as detailed in [buffering](#buffering).
270
+
1. At time of flushing buffer, send array of logs to Sentry via `log` envelope, apply rate limiting as per [data category and rate limiting](#data-category-and-rate-limiting).
291
271
292
272
### Default Attributes
293
273
@@ -328,6 +308,16 @@ If a log is generated by an SDK integration, the SDK should also set the `sentry
328
308
329
309
Beyond these attributes, we are exploring if the SDK should also send OS, user, and device information automatically (via reading the appropriate contexts from the scope). Given this behaviour can easily be added as a new feature to the SDK, it does not have to be part of the initial SDK implementation until we make a finalized decision.
330
310
311
+
### Data Category and Rate Limiting
312
+
313
+
A new data category for logs has been added to Relay, `log_item`. Both the `log` envelope and `otel_log` envelope is covered by this data category. This will need to implemented in the SDK. Rate limiting applies as usual, there is no special rate limit or rate limiting behaviour for logs. With this data category, client outcomes should be tracked by the SDKs to track how often logs are dropped by the SDK.
314
+
315
+
### Buffering
316
+
317
+
Logs should be buffered before being sent. SDKs should keep a buffer of logs on the client (so you can have logs from multiple traces in the buffer) that flushes out based on some kind of condition. We recommend to use follow the [batch processor specification outlined](/sdk/telemetry/spans/batch-processor/) in the develop docs, but you should choose the approach that works best for your platform. When starting intial development on the SDK you can choose a simple approach to buffer like flushing logs if the buffer length exceeds 100 items, or if 5 seconds have passed.
318
+
319
+
SDKS should NOT release logging capabilities to users if a buffering implementation has not been added to their SDK when adding logging APIs.
320
+
331
321
### SDK Integrations
332
322
333
323
SDKs should aim to have it so that console/logger integrations create logs as per the appropriate log level if `enableLogs`/`enable_logs` is set to true. Examples of this include JavaScript's `console` object and Pythons `logging` standard library.
As of version 8.50.0, you can enable AppHangsV2, which is available on iOS and tvOS. The main difference is that AppHangsV2 differentiates between fully-blocking and non-fully-blocking app hangs, which you might choose to ignore, and since version 8.45.0 measures the duration of app hangs. A fully-blocking app hang is when the main thread is stuck completely, and the app can't render a single frame. A non-fully-blocking app hang is when the app appears stuck to the user, but can still render a few frames. Fully-blocking app hangs are more actionable because the stacktrace shows the exact blocking location on the main thread. Non-fully-blocking app hangs can have a stacktrace that doesn't highlight the exact blocking location, since the main thread isn't completely blocked.
136
+
As of version 8.50.0, you can enable AppHangsV2, which is available on iOS and tvOS. The main difference is that AppHangsV2 differentiates between fully-blocking and non-fully-blocking app hangs, which you might choose to ignore, and measures the duration of app hangs. A fully-blocking app hang is when the main thread is stuck completely, and the app can't render a single frame. A non-fully-blocking app hang is when the app appears stuck to the user, but can still render a few frames. Fully-blocking app hangs are more actionable because the stacktrace shows the exact blocking location on the main thread. Non-fully-blocking app hangs can have a stacktrace that doesn't highlight the exact blocking location, since the main thread isn't completely blocked.
137
137
138
138
The SDK sets the `exception.type` to `App Hang Fully Blocked` or `App Hang Non Fully Blocked`, so you can filter for App Hangs via `error.type` in Sentry.
Copy file name to clipboardExpand all lines: docs/platforms/apple/common/index.mdx
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -342,6 +342,14 @@ if (error) {
342
342
}
343
343
```
344
344
345
+
<PlatformSection supported={[ "apple.macos"]}>
346
+
347
+
## Uncaught Exceptions
348
+
349
+
On macOS, the Sentry Apple SDK can't capture uncaught exceptions out of the box. Please visit <PlatformLink to="/usage/#capturing-uncaught-exceptions">capturing uncaught exceptions</PlatformLink> for more information.
350
+
351
+
</PlatformSection>
352
+
345
353
## Next Steps
346
354
347
355
- <PlatformLink to="/features">Learn more about Sentry's Apple SDK features</PlatformLink>
0 commit comments