
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
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.
npm i logforth
pnpm add logforth
First you want to instantiate a new instance of the logger:
import {Logger} from "logforth";
const logger = new Logger();
logger.info("First logger test");
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 });
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()
});
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.
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" } });
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);
});
FAQs
Simple logging framework for NodeJS
We found that logforth demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.