<!-- Documentation header -->
---
summary: OutSystems Developer Cloud (ODC) offers comprehensive tools for monitoring and troubleshooting applications through logs and traces within its portal.
tags:
  - Debugging
  - Logging
  - Monitoring
  - Performance
  - Troubleshooting
locale: en-us
guid: ca7cae65-c466-4d93-bab6-85ac740519c0
app_type: mobile apps, reactive web apps
platform-version: odc
figma: https://www.figma.com/design/IStE4rx9SlrBLEK5OXk4nm/Monitor-and-troubleshoot-apps?node-id=2449-32709&t=EnvgiDeMCyCzCWPm-1
audience:
  - Developer
outsystems-tools:
  - odc portal
coverage-type:
  - understand
  - apply
topic:
  - monitor-app-issues
  - odc-observability-data-retention
isautopublish: true
---

# Monitoring and troubleshooting apps

OutSystems Developer Cloud (ODC) provides a unified experience for monitoring and troubleshooting your apps. The [Logs](#logs),[Traces](#traces) and [Analytics](#analytics) screens are available in ODC Portal under the **Monitor** section.

Logs and traces are complementary for getting to the root cause of a problem with an app. While a log helps you identify the problem, the associated trace helps you locate the problem. You can then use this information to help resolve the problem. Traces are also helpful for troubleshooting a performance issue with an app.

Complementing logs and traces, metrics provide a quantitative view of your app's performance and resource consumption over time. These aggregated data points allow you to identify trends, establish baselines, and proactively detect potential issues before they impact end-users. ODC automatically collects a range of metrics, offering insights into, for example, your app's health score, apps by usage, requests, and errors.

<div class="info" markdown="1">

This functionality uses the Data Platform, which may process data outside your ODC organization region to provide its capabilities. For more information, refer to [Data Platform](https://extranetprdintegrations.outsystems.net/Documentation_API/rest/getContentMarkdown/doc?Guid=03e2025e-bca6-46f7-af75-725e1d310127).

</div>

<div class="info" markdown="1">

In a multi-portfolio organization, monitoring and logs are scoped per portfolio. For more information, refer to [Configuration management with multiple portfolios](https://extranetprdintegrations.outsystems.net/Documentation_API/rest/getContentMarkdown/doc?Guid=d8e5f1a3-9b6c-4d2f-c841-0f5a7e3b9c4d).

</div>

## Logs

Apps have associated logs. ODC automatically generates some logs, for example when a timer fails to execute. App logic built by a developer triggers other logs, for example an [exception](https://extranetprdintegrations.outsystems.net/Documentation_API/rest/getContentMarkdown/doc?Guid=ec639f37-b5ee-4ca4-974d-9096596614ae) triggered by the failure of an end-user to provide a required input. Developers can also use the LogMessage system action.

For recommendations on using LogMessage to diagnose production issues in mobile apps, refer to [Best practices for testing and debugging mobile apps](https://extranetprdintegrations.outsystems.net/Documentation_API/rest/getContentMarkdown/doc?Guid=fca52f4d-822f-4375-9081-285d2c43b9d4).

Each log has a level of severity: **Error**, **Warning**, and **Information**.

![Logs screen showing error logs from the development stage with filter options.](images/logs-screen-pl.png "Logs Screen")

By default, when you open the **Logs** screen you see error logs from the development stage ordered by time in descending order. Use the filter inputs to filter logs by stage, asset (app or agent), severity, date/time, user, and message. You can filter logs by date back up to four weeks.

<div class="info" markdown="1">

The **Logs** screen returns at most 10,000 log entries per search. If your filters match more than 10,000 entries, you aren't seeing all of them. Narrow the time window so the matching entries fall within the 10,000 limit. To analyze higher log volumes or retain logs longer, stream them to an external destination. Refer to [Streaming observability data](https://extranetprdintegrations.outsystems.net/Documentation_API/rest/getContentMarkdown/doc?Guid=43e08fbf-f050-4946-aad2-289ab110be44).

</div>

When you click the embedded link of a log's date/time, you open the detail page for that unique log. You see the log message, stack trace, and any logs related to the same request. Go to the log's associated trace by clicking the **Go to trace** button. When a log doesn't have an associated trace, the button is disabled. Currently, you only see traces for requests using server-side elements.

![Log details screen displaying the message, stack trace, and related logs.](images/logs-details-screen-pl.png "Log Details Screen")

## Traces

When an app makes a request using a server-side element, it generates a trace. A trace is an end-to-end view of a request comprised of a series of intervals known as spans. Each span is a logical unit of work and has a duration. You review a trace to:

* Identify which span threw an error to get to the root cause.

* Understand the performance of each span in the app and dependent apps.

For example, you could quickly identify that the issue with a Service Action request as an SQL query (a span of the trace) has invalid syntax.

<div class="info" markdown="1">

Traces take a few minutes to generate and display. It takes time for ODC to aggregate all the spans within the request.

</div>

By default, when you open the **Traces** screen, you see traces from the development stage ordered by time in descending order. The stage filter of the **Logs** and **Traces** screens are synchronized. This means if you were viewing production logs in the Logs screen, you see production logs in the **Traces** screen.

![Traces screen showing traces from the development stage with filter options.](images/traces-screen-pl.png "Traces Screen")

Use the filter inputs to filter traces by stage, asset (app or agent), element type, trace status, total duration, date/time, and user. You can filter traces by date back up to four weeks. When you filter by an agent, you see traces where that agent is the origin of the trace. This means flows triggered by an Event Handler, a Timer, or a REST Expose. Traces where the agent runs as a span inside another app's trace aren't returned by the agent filter.

When you click the embedded link of a trace's date/time, you open the detail page for that unique trace. On the left side of the screen you see each span of the trace in order of execution alongside its duration. A red circle with X next to a span indicates an error. If any span of a trace has an error then the status of the trace is **Error**. Otherwise the trace status is **OK**.

![Trace details screen displaying spans, attributes, and related logs.](images/traces-details-pl.png "Trace Details Screen")

You use the **Show details** toggle to show ODC internal spans. This may provide additional context for your troubleshooting, but you can't action a problem with an ODC internal span.

When you click a span you see its attributes and any related logs on the right side of the screen.

## Analytics

ODC provides valuable metrics to help you understand your app's activity and performance. These metrics offer an aggregated view of key indicators, allowing you to identify trends and potential areas for optimization.

The **Analytics** screen monitors apps based on performance, usage, and errors, displaying insights such as health score, apps by usage, requests, errors, response time, and AI models by request.

## Sharing data

Each log and each trace has a unique ID contained in the URL (`...?id=x...`). If you need to share a log or trace with a team member, share the URL. You must have organization role permissions.

## Retaining data

You can access logs, traces, and metrics data up to four weeks old within the ODC Portal. You can also stream logs, traces, and metrics to external destinations. This enables extended retention periods and seamless integration with other APM tools. For more information about streaming observability data, refer to [Streaming observability data](https://extranetprdintegrations.outsystems.net/Documentation_API/rest/getContentMarkdown/doc?Guid=43e08fbf-f050-4946-aad2-289ab110be44).

## Related resources

* [Streaming observability data](https://extranetprdintegrations.outsystems.net/Documentation_API/rest/getContentMarkdown/doc?Guid=43e08fbf-f050-4946-aad2-289ab110be44)
* [Best practices for testing and debugging mobile apps](https://extranetprdintegrations.outsystems.net/Documentation_API/rest/getContentMarkdown/doc?Guid=fca52f4d-822f-4375-9081-285d2c43b9d4)
* [Monitor assets with ODC Analytics](https://extranetprdintegrations.outsystems.net/Documentation_API/rest/getContentMarkdown/doc?Guid=e190d5fb-6b99-4d9b-a64f-a3b34be3588d)
* [Manage technical debt in ODC](https://extranetprdintegrations.outsystems.net/Documentation_API/rest/getContentMarkdown/doc?Guid=6be15662-74c5-4c35-9a7d-16a28816614c)
* [Traces](https://extranetprdintegrations.outsystems.net/Documentation_API/rest/getContentMarkdown/doc?Guid=03e2025e-bca6-46f7-af75-725e1d310127)
* [Platform limits](https://extranetprdintegrations.outsystems.net/Documentation_API/rest/getContentMarkdown/doc?Guid=D940C32D-0409-4D49-B6FE-BB831E5EF12C)


