npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@json-express/logger-pino

v2.0.0

Published

High-performance Pino logger for JSON Express v2

Readme

@json-express/logger-pino

High-performance, industry-standard structured logging for JSONExpress.

📦 Overview

@json-express/logger-pino is the recommended logger for production. It produces high-speed, asynchronous, JSON-structured log output that drops straight into modern observability stacks — ELK, Splunk, Datadog, CloudWatch, Loki, and friends.

It wraps Pino and implements the JSONExpress ILogger interface.

🚀 Key Features

  • Structured by Default: One JSON object per line with level, time, pid, hostname, component, and msg — ready to ship to any log aggregator.
  • Request Correlation: Reads the framework-wide traceId from RequestContext and stamps it onto every log line — no manual propagation needed.
  • High Performance: Asynchronous file/stream transports keep logging off the request path.
  • Two Output Modes: enterprise file mode (default — writes to ./logs/app.log) or 12-factor stream mode (stdout/stderr), with optional pino-pretty formatting in development.

🛠️ Configuration

All settings are JSONExpress environment variables. . and __ are interchangeable nesting separators; case is insensitive.

| Key | Default | Description | | :--- | :--- | :--- | | jex.logger | (unset — falls back to console) | Set to @json-express/logger-pino to activate. | | jex.log.level | info | Logging severity (info, debug, warn, error). | | jex.log.path | ./logs | Destination directory or file path. Set to stdout or stderr for terminal output. | | jex.log.pretty | true in development, otherwise false | Pretty terminal output via pino-pretty. Only applies to stream mode (stdout/stderr). |

🔄 Logging Modes

  1. File Mode (default) — logs land in ./logs/app.log as raw JSON. Override the directory with jex.log.path=./var/server (becomes ./var/server/app.log) or pass a full file path with jex.log.path=/var/log/my-app.log. Missing directories are created on demand.
  2. Stream Mode — set jex.log.path=stdout (or stderr) to pipe directly to the terminal. Combine with jex.log.pretty=true for a colorized, dev-friendly stream.

💻 Manual Usage

If you are wiring up a JSONExpress kernel without the CLI:

import { JsonExpressKernel } from '@json-express/core';
import { EnvConfigProvider } from '@json-express/config-env';
import { PinoLogger } from '@json-express/logger-pino';

const config = new EnvConfigProvider();
const logger = new PinoLogger({ configProvider: config });

const kernel = new JsonExpressKernel();
kernel.registerLogger(logger);

📜 Standardized Interface

export interface ILogger {
    info(message: string, context?: any): void;
    warn(message: string, context?: any): void;
    error(message: string, context?: any): void;
    debug(message: string, context?: any): void;
    child(context: any): ILogger;
}

See also