Logs
Send structured logs from any ErrTap SDK, then search, filter and live-tail them on the ErrTap Logs page next to your errors.
Logs are structured lines — a level, a message and optional data — that land next to your errors, so you can read what happened before an issue fired.
Send logs
Every ErrTap SDK has a logger:
import { logger } from '@errtap/browser'; // or @errtap/node, @errtap/next, @errtap/nestjs, @errtap/react-native
logger.info('checkout started', { orderId: 'ord_1' });
logger.warn('payment retry', { attempt: 2 });\ErrTap\ErrTap::info('checkout started', ['orderId' => $order->id]); // LaravelErrTap.ErrTap.Info("checkout started", new Dictionary<string, object?> { ["orderId"] = id }); // .NETLevels are debug, info, warning (SDKs also accept warn) and error. The data you pass
is stored as the line's context. Logs carry the SDK's environment, release and tags.
Sentry SDKs with structured logs enabled (enableLogs) are stored here too.
Without an SDK, POST to /ingest/log.
The Logs page
- Live tail polls for new lines every few seconds while the page is visible. Scroll away and new lines are held until you jump back to the top.
- Filters for level, text search, environment, release and time range.
- A volume histogram by level. Drag across it to zoom into a time range.
- Expand a row to see its full context and copy it.
Quota and limits
Logs count toward your monthly event quota, with their own rate-limit window so a noisy
logger can't crowd out errors. On the client, the browser SDK caps errors and logs at 60 a
minute each, separately. The Node and .NET SDKs pause after a 429 and cap unfinished
requests per endpoint, so a backed-up log endpoint doesn't hold up errors. The Laravel and
React Native SDKs have no client-side budget. Messages are capped at 8,192 characters. Logs are kept for your
plan's retention window. If PII scrubbing is on, it applies to logs as well.