TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published


A logging service which can be configured and shared to easily run with other @openfn packages.

The fundamental idea of the logger is to print namespaced output to the console, with powerful filtering controls. This allows different components to log within a single command, possibly using fine-grained output options.


  • Supports the standard console API (well, not yet)
  • Filtered output in the terminal
  • Pluggable emitter layer
  • Mock logger is great for unit tests


The logger is build around 4 filter levels.

Packages in kit should log as much as they possibly can using the following guidelines:

default - Defaults for all the family. Prints what the user absolutely has to know. Includes notification of high level process completions. Also shows errors and warnings. info - For power users. Shows everything default plus generally interesting high-level information about what's happening internally. debug - For devs debugging - really detailed output about stepping into and out of major operations. Includes data dumps. none - don't show any log output

JSON Output

Set the json object to a truthy value to output all logs as JSON objects of the following structure:

{ level: 'info', name: 'CLI', message: ['Loaded adaptor'] }


Import and create a logger:

import createLogger from '@openfn/logger'
const logger = createLogger();

You can pass in a name and filter log levels:

createLogger("my logger", { level: 'debug' });

Then just call the logger with whatever you like!


You can log to the following levels:

❯ debug ℹ info ✔ success ♦ always ⚠ warn ✘ error

For more options see src/options.ts.

Mock logger

In unit testing it's helpful to track log output.

Pass the mock logger where Logger is accepted. It won't print anything to stdout, but will expose _last, _history and _parse() on the logger object.

_last returns the last logger output, as an array of the form [level, namespace, icon, message...] (as applicable).

_hisory returns an array of all _last messages (oldest at index 0)

_parse will intelligently parse a _last message and return an object with named properties. This takes into account the log options so you don't have to work out what's what.

const { level, icon, namespace, message } = logger._parse(logger._last);




Package Sidebar


npm i @openfn/logger

Weekly Downloads






Unpacked Size

19.1 kB

Total Files


Last publish


  • mtuchi
  • elias-ba
  • stuartc-openfn
  • taylordowns2000