JavaScript SDK
Official Node.js and TypeScript SDK for LogFlow. Supports batching, automatic retry, and offline queue.
Installation
bash
npm install @getlogflow/js
# or
pnpm add @getlogflow/jsBasic usage
typescript
import { LogFlow } from '@getlogflow/js'
const log = new LogFlow({
apiKey: 'lf_YOUR_API_KEY',
service: 'my-api',
})
log.info('Server started', { port: 3000 })
log.warn('High memory usage', { memoryMB: 450 })
log.error('Database connection failed', { host: 'db.internal' })
// Flush on shutdown
process.on('SIGTERM', async () => {
await log.destroy()
process.exit(0)
})Log levels
Available methods: trace · debug · info · warn · error · fatal
Configuration options
typescript
const log = new LogFlow({
apiKey: 'lf_YOUR_API_KEY', // required
service: 'my-api', // service name on every log
host: 'worker-1', // hostname/instance label
baseUrl: 'https://api.getlogflow.com', // default
batchSize: 10, // flush after N logs (default: 10)
flushInterval: 5000, // flush every N ms (default: 5000)
maxRetries: 3, // retry on failure (default: 3)
maxQueueSize: 1000, // offline queue limit (default: 1000)
onError: (err) => console.error('LogFlow error:', err),
})Retry & offline queue
The SDK automatically retries failed requests with exponential backoff (1s → 2s → 4s). In browser environments, logs are held in an offline queue when navigator.onLine === false and flushed when the connection is restored.
ℹ️
Call
await log.destroy() before your process exits to flush any pending logs. Without it, buffered logs may be lost.Express.js middleware
typescript
import express from 'express'
import { LogFlow } from '@getlogflow/js'
const log = new LogFlow({ apiKey: process.env.LOGFLOW_API_KEY!, service: 'api' })
const app = express()
app.use((req, res, next) => {
const start = Date.now()
res.on('finish', () => {
log.info(`${req.method} ${req.path} ${res.statusCode} ${Date.now() - start}ms`)
})
next()
})