1.2.2 • Published 11 months ago

logforth v1.2.2

Weekly downloads
-
License
BSD-3-Clause
Repository
github
Last release
11 months ago

Logforth

Release

This is a simple logging framework specifically build for NodeJS.

I have been using several logging frameworks in the past, but I had always issues with one or another quirks of each. After comparing how each of them works, as well as looking for more inspiration in the Rust logging frameworks I came up with the design for this logging library.

Logforth supports both pretty printing for development and ndjson output for production. Each log entry has a mandatory message and optional attributes. Attributes are included as-is in ndjson output and pretty printed in development.

Installation

npm

npm i logforth

pnpm

pnpm add logforth

Usage

First you want to instantiate a new instance of the logger:

import {Logger} from "logforth";

const logger = new Logger();
logger.info("First logger test");

Min log level

By default, Logforth will log all events. You can limit this through the minLevel option:

import {Logger, LogLevel} from "logforth";

const logger = new Logger({ minLevel: LogLevel.Info });

In order to disable logging completely you can pass disableLogging to minLevel:

import {Logger, disableLogging} from "logforth";

const logger = new Logger({ minLevel: disableLogging });

Pretty printing

In development, you might prefer to see pretty printed log message. A simple switch between production and development could look like this:

import {Logger, NdJsonTransport, PrettyTransport} from "logforth";

const logger = new Logger({
    transport: process.env.NODE_ENV === "production"
        ? new NdJsonTransport()
        : new PrettyTransport()
});

Attributes

You can pass arbitrary attributes to each log entry:

logger.info("I contain attributes", { foo: "bar" });

In ndjson output they will be inlined with the rest of the log entry. Thus, you must not use the following attribute names: time, level and msg.

Default attributes

If you want to have specific attributes always present, e.g. the hostname of the running process, you can include this in the constructor:

const logger = new Logger({ attributes: { "hostname": "foo" } });

Context aware logging

Logforth supports logging in context aware situation, for instance when you want to keep track of a request ID. You can do so through the withContext() method. The following example demonstrates how to do this in Koa:

koaApp.use((context, next) => {
    return logger.withContext({ requestId: "foo" }, next);
});
1.2.0

11 months ago

1.2.2

11 months ago

1.2.1

11 months ago

1.1.4

11 months ago

1.1.3

11 months ago

1.1.2

11 months ago

1.1.1

11 months ago

1.1.0

11 months ago

1.0.1

11 months ago

1.0.0

11 months ago