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/js

Basic 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()
})