Log in

Monitoring

Monitor your services with real-time request logs and metrics on Forte Platforms.

Viewing Logs

Request Logs

Forte automatically captures every HTTP request to your service, including the method, path, status code, and latency.

To view request logs:

  1. Navigate to your project
  2. Select a service
  3. Click the Requests tab

From here, you can see all incoming requests at a glance. Requests that returned a 5xx error are highlighted so you can spot failures immediately.

Try it yourself

Click any request below to see its correlated logs — this is how the actual Forte interface works.

All Requests
TimestampMethodPathStatusLatency (ms)
Feb 12, 03:45:18GET/api/users20045.20
Feb 12, 03:45:19POST/api/orders20189.50
Feb 12, 03:45:20GET/api/products/12320032.10
Feb 12, 03:45:23POST/api/checkout5001250.80
Feb 12, 03:45:25GET/api/cart20028.30
Feb 12, 03:45:27POST/api/webhooks/stripe422156.20
Feb 12, 03:45:28GET/health20012.50
Feb 12, 03:45:30GET/api/orders20051.70
👆 Click any request above to see its logs

For each request you can inspect:

  • Request & response headers and body
  • All log lines written during that request (INFO, WARN, ERROR)
  • Latency breakdown (total, target, integration)
  • User context if the request was authenticated

How Forte Correlates Logs

Forte correlates logs with requests in one of two ways:

  1. More accurate, requires onboarding: With a request ID that is included in every log line
  2. Default option: By using the timestamp of the request and log lines to match them together

If your service receives a large volume of concurrent requests, you should onboard to request ID correlation to ensure that logs are accurately matched to requests. Forte provides the request ID in the X-Forte-Request-Id header, and will automatically extract request IDs from your logs if you include them in your log lines.

Log Levels

Forte recognizes four log levels: ERROR, WARN, INFO, and DEBUG. A level is detected when it appears anywhere in the log line — either as a plain word or in brackets:

javascript
# All of these are recognized
[ERROR] Failed to connect to database
INFO: Server started on port 3000
2024-01-15 DEBUG request received
WARN - retrying after timeout

Log lines that don't contain a recognized level are classified as INFO by default. Levels like TRACE, FATAL, and CRITICAL are not recognized and will also be treated as INFO.

Level detection is case-insensitive, so error, Error, and ERROR are all equivalent.

Request ID Correlation

Forte injects a unique request ID into every inbound request via the X-Forte-Request-Id header. To enable accurate log correlation, read this header and include its value in each log line you write during request handling.

Forte recognizes any of the following key names in your log output:

  • requestId
  • request_id
  • request-id
  • x-request-id

The key and value can be separated by =, :, or a space. The value must contain only letters, numbers, and hyphens.

javascript
# All of these are recognized
requestId=abc123-def456
request_id: abc123-def456
x-request-id abc123-def456
[INFO] requestId=abc123-def456 user login successful

Node.js (Express)

js
app.use((req, res, next) => {
  req.requestId = req.headers['x-forte-request-id'];
  next();
});
 
// In your route handlers:
console.log(`INFO requestId=${req.requestId} processing order`);

Python (Flask)

python
from flask import request
import logging
 
@app.before_request
def set_request_id():
    g.request_id = request.headers.get('X-Forte-Request-Id')
 
# In your route handlers:
logging.info(f"requestId={g.request_id} processing order")

Java (Spring Boot)

java
@Component
public class RequestIdFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest request,
            HttpServletResponse response, FilterChain chain)
            throws ServletException, IOException {
        String requestId = request.getHeader("X-Forte-Request-Id");
        MDC.put("requestId", requestId);
        try {
            chain.doFilter(request, response);
        } finally {
            MDC.remove("requestId");
        }
    }
}

Then configure your logback pattern to include %X{requestId}:

xml
<pattern>%d{HH:mm:ss} %-5level requestId=%X{requestId} %msg%n</pattern>

Metrics

Navigate to your service's Overview tab to view:

  • Request volume — Total requests over the selected time range
  • Status code distribution — Breakdown by 2xx, 4xx, and 5xx responses
  • Latency percentiles — P50, P90, and P99 response times

These metrics update automatically as new requests arrive.

Search

Search documentation and console pages