Skip to content
Logixlysia
Esc
navigateopen⌘Jpreview

Understand every request your app serves

Logixlysia turns Elysia traffic into structured, colorful log lines — then filters the noise, samples the volume, and ships the rest to the platform you already use.

bun add logixlysia
Read the docs
Terminal — api-server
Send a request

Request context

See every request, end to end

Method, path, status, duration, and client IP land on one readable line — captured automatically for every request, with no wrappers and no middleware chains.

Explore request context
Access log.use(logixlysia())
TimeMethodPathStatusDurationIP
10:24:31.804GET/2003ms10.0.0.42
10:24:32.108POST/auth/login20138ms10.0.0.17
10:24:33.412GET/reports200613ms172.16.4.9
10:24:34.001GET/export2001.2s10.0.0.42
10:24:35.219GET/crash5002ms203.0.113.5

Filtering

Keep the noise out

Filter by level, HTTP method, or status code. Health checks and favicons fade away — warnings and errors stay loud.

Explore filtering
Consolefilter: { level: ['warn', 'error'] }
MethodPathStatusDuration
GET/health2001ms
GET/2003ms
GET/favicon.ico4041ms
POST/auth/login20138ms
GET/crash5002ms

SamplingNew

Keep the bill flat

Head sampling keeps a percentage of high-volume levels. Tail sampling replays the dropped lines the moment a request errors or runs slow — routine traffic costs almost nothing, interesting requests stay complete.

Explore sampling
Console
head: { INFO: 10 }tail: { status: 400 }
MethodPathStatusDurationSampling
GET/api/items2004msreplayed
GET/api/items/72003msreplayed
GET/api/cart2006msreplayed
POST/checkout50087mstail match

EnrichersNew

Add context once, see it everywhere

Enrichers contribute fields to every request — trace ids from the traceparent header, geo from your platform's headers, parsed user agents. Set them up once and the fields reach the console, files, and every adapter.

Explore enrichers
Enriched requestenrichers: [traceparentEnricher(), geoEnricher()]
FieldValue
trace_id4bf92f3577b34da6a3ce929d0e0e4736
geo.cityBerlin
geo.countryDE
ua.browserChrome
ua.devicedesktop

File rotation

Outlive the terminal

Write logs to disk with size- and time-based rotation built in — yesterday's file compresses and rotates away on its own.

Explore file logging

Adapters9 platforms

Ship logs where you already look

Every adapter is a regular transport — batched, retried, and non-blocking — so a slow sink never delays a response. Mix them with console and file logging, or run them exclusively.

Explore adapters

Frequently asked questions

What is Logixlysia?

A logging plugin for Elysia.js. One .use(logixlysia()) gives every request a structured, colorful log line with method, path, status, and duration.

Does it need configuration?

No — the defaults are production-ready. Custom formats, filtering, file output, and the startup banner are all opt-in options on the same plugin.

Can I filter logs?

Yes. Filter by log level, HTTP method, or status code so health checks and favicons stay out of your terminal while warnings and errors stay loud.

Will it flood my log bill?

No. Head sampling keeps a percentage of high-volume levels, and tail sampling replays the dropped lines when a request errors or runs slow — the bill stays flat while interesting requests stay complete.

Can it write to files?

Yes. File logging ships with size- and time-based rotation built in, so old logs rotate and compress without extra tooling.

Can it send logs to my observability platform?

Yes — nine built-in adapters cover Axiom, Datadog, Sentry, PostHog, Better Stack, HyperDX, Grafana Loki, ClickHouse, and any OpenTelemetry backend over OTLP. Each one batches, retries, and never blocks a response.

Does it fit my stack?

Pino under the hood, OpenTelemetry ready, and WebSocket aware. It runs anywhere Elysia runs, with Bun as the first-class runtime.