A stream to send Pino events to Seq. Tested with Node.js versions 18.x and up.
Now written in TypeScript with automatic type definitions and full ES Module support!
npm install pino-seqUse the createStream() method to create a Pino stream configuration, passing serverUrl, apiKey and batching parameters.
This example works in both JavaScript and TypeScript projects:
import pino from 'pino';
import { createStream } from 'pino-seq';
// Create a stream to Seq
const stream = createStream({
serverUrl: 'http://localhost:5341',
apiKey: 'your-api-key' // optional
});
// Create a Pino logger
const logger = pino({ name: 'pino-seq example' }, stream);
// Log some messages
logger.info('Hello Seq, from Pino');
// Child loggers work too
const frLogger = logger.child({ lang: 'fr' });
frLogger.warn('au reviour');
// Flush logs before exit
await stream.flush();For TypeScript projects with explicit typing:
import { createStream, PinoSeqStreamConfig } from 'pino-seq';
const config: PinoSeqStreamConfig = {
serverUrl: 'http://localhost:5341',
// ... see Configuration section below for all options
};
const stream = createStream(config);The createStream() function accepts a configuration object with the following properties:
serverUrl(string): The URL of your Seq serverapiKey(string, optional): API key for authenticationlogOtherAs(string, optional): Log level for unstructured messages ('Verbose', 'Debug', 'Information', 'Warning', 'Error', 'Fatal')additionalProperties(object, optional): Additional properties to add to all log eventsmaxBatchingTime(number, optional): Maximum time in milliseconds to wait before sending a batcheventSizeLimit(number, optional): Maximum size of a single eventbatchSizeLimit(number, optional): Maximum size of a batchonError(function, optional): Error handler callback
The test suite includes:
- Integration tests that verify round-trip logging to Seq by querying the API
- Example tests that verify examples work as users would use them (via
npm link)
With local Seq instance (recommended - tests actual integration):
# Start Seq container (with health check)
npm run test:setup
# Run tests (includes TypeScript compilation and example verification)
npm test
# Stop Seq
npm run test:teardownWithout Seq (type checking only):
npm run build # Just compiles TypeScript# Start Seq
npm run test:setup
# Run the example
npm start
# View logs at http://localhost:5341
# Stop Seq
npm run test:teardownnpm run buildThe build uses the TypeScript compiler (tsc) to produce ES Module output in the dist/ directory with automatic type definitions.
Note: This package is ESM-only (like its dependency seq-logging). If you need CommonJS support, please use version 2.x or earlier.
Originally by Simi Hartstein and published as simihartstein/pino-seq; maintainership transferred to Datalust at version 0.5.