1.0.1 • Published 2 months ago

@openfn/logger v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
2 months ago

@openfn/logger

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.

Features

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

Levels

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'] }

Usage

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!

logger.log('abc');

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);
1.0.1

2 months ago

1.0.0

3 months ago

0.0.20

3 months ago

0.0.14

10 months ago

0.0.15

10 months ago

0.0.16

10 months ago

0.0.17

9 months ago

0.0.18

6 months ago

0.0.19

6 months ago

0.0.13

1 year ago

0.0.11

1 year ago

0.0.12

1 year ago

0.0.10

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.5

2 years ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago