Migrating from evlog
Map evlog wide events to Logixlysia request context and access logs
Plugin setup
evlog
import { evlog } from 'evlog/elysia'
new Elysia().use(evlog({ drain: myDrain }))Logixlysia
import logixlysia from 'logixlysia'
new Elysia().use(logixlysia({ preset: 'prod' }))Context accumulation
| evlog | Logixlysia |
|---|---|
log.set({ userId: 'x' }) | store.logger.mergeContext(request, { userId: 'x' }) |
log.set({ cart: { total: 99 } }) | store.logger.mergeContext(request, { cart: { total: 99 } }) |
useLogger() | store.logger in handlers |
Emitting the request log
evlog:
log.emit({ status: 200 })Logixlysia emits the access log automatically in onAfterHandle. Use a custom log only when you need to skip the default line:
store.logger.info(request, 'handled manually')AI metrics
evlog — automatic via evlog/ai.
Logixlysia
import { mergeAIMetrics } from 'logixlysia/ai'
mergeAIMetrics(store.logger, request, {
model: 'claude-sonnet',
inputTokens: 100,
outputTokens: 50,
totalTokens: 150
})Tracing
Use injectTraceContext from logixlysia/otel in onRequest (see OpenTelemetry).
Drains vs transports
evlog drains map to Logixlysia transports:
logixlysia({
config: {
transports: [
{
log: (level, message, meta) => {
myDrain.write({ level, message, ...meta })
}
}
],
useTransportsOnly: true
}
})