@eastgold15/elogs
v2.0.0
Published
🦊 Elogs is a logger for Elysia 2.0
Readme
📩 Installation
bun add @eastgold15/elogs elysia@nextelysia@next 对应 Elysia 2。如果你还在 Elysia 1.4,用 1.x 的 createElogs(latest 标签)。
📝 Usage
import { Elysia } from 'elysia'
import { createElogs } from '@eastgold15/elogs'
const app = new Elysia()
.use(createElogs())
.get('/', () => 'Hello World')
.listen(3000)createElogs() 返回一个 Elysia plugin ——Logger 挂在 store.logger,请求作用域的 log 派生到 handler context。自动注册 .request、.afterHandle、.error 和 .setup 钩子,你不用手动接线。
With configuration
app.use(createElogs({
preset: 'prod',
config: {
service: 'my-api',
showStartupMessage: true,
customLogFormat: '🦊 {now} {level} {duration} {method} {pathname} {status} {message} {ip}',
logFilePath: './logs/example.log',
logRotation: {
maxSize: '10m',
interval: '1d',
maxFiles: '7d',
compress: true,
},
logFilter: { level: ['ERROR', 'WARNING'] },
pino: { redact: ['password', 'token', 'apiKey'] },
},
}))完整字段见 Configuration。预设见 Presets。
WebSocket logging
WebSocket 生命周期走独立的 createWsHandlerWrapper(Elysia 2 的 #private brand 不让 plugin 实例上挂额外字段):
import { Elysia } from 'elysia'
import { createElogs, createWsHandlerWrapper } from '@eastgold15/elogs'
const wrapWs = createWsHandlerWrapper()
new Elysia()
.use(createElogs())
.ws('/chat', wrapWs({
open(ws) { ws.send('connected') },
message(ws, payload) { ws.send(payload) },
}))⚙️ Plugins & integrations
mergeAIMetrics—createElogs/ai把 AI SDK 用量挂到 access log 的context.aiinjectTraceContext—createElogs/otel把 active span 的trace_id/span_id合并进请求 context
📚 Documentation
完整文档:elogs.vercel.app
📄 License
Licensed under the MIT License.
