← All @molecule/* packages · App templates

@molecule/api-logger-loglevel

Provider bond · logger · API (Node) · v1.0.1 · Apache-2.0

Loglevel logger provider for molecule.dev.

npm install @molecule/api-logger-loglevel

npm · Source on GitHub · Implements @molecule/api-logger

How it works

@molecule/api-logger-loglevel is a provider bond on the API (Node) side: it implements the logger core interface (@molecule/api-logger) with a concrete vendor or library behind it.

Your code calls the core; you wire this provider once at startup. Swapping vendors later is one line in that wiring, not a rewrite.

import { logger, setLogger } from '@molecule/api-logger'
import { provider } from '@molecule/api-logger-loglevel'

setLogger(provider)
logger.info('Server started on port', 3000)

Works with: @molecule/api-logger

Reference

Auto-generated, AI-first package reference for the molecule.dev ecosystem. It is written to be read by coding agents as much as by people, and is generated from this package's source — edit src/index.ts JSDoc, not this file.

Loglevel logger provider for molecule.dev.

Provides a lightweight logger implementation using loglevel.

Quick Start

import { logger, setLogger } from '@molecule/api-logger'
import { provider } from '@molecule/api-logger-loglevel'

setLogger(provider)
logger.info('Server started on port', 3000)

Type

provider

Installation

npm install @molecule/api-logger-loglevel @molecule/api-logger loglevel

API

Interfaces

Logger

Logger interface that all implementations must satisfy.

interface Logger {
  trace(...args: unknown[]): void
  debug(...args: unknown[]): void
  info(...args: unknown[]): void
  warn(...args: unknown[]): void
  error(...args: unknown[]): void
}

Types

LogLevel

Log levels supported by the logger.

type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent'

Functions

createLogger(options)

Creates a named loglevel logger that implements the Logger interface.

Without an explicit level, the instance is set to pass everything through (TRACE) — loglevel's own out-of-the-box default is WARN, which silently swallows info/debug and makes the logger look broken. Level filtering belongs to @molecule/api-logger's single gate (LOG_LEVEL / setLevel(), default 'info'); pass level here only to add a bond-side gate on top.

Note: loglevel caches instances by name, so createLogger({ name }) with an already-used name returns (and re-levels) that same shared instance.

function createLogger(options?: { level?: LogLevel; name?: string }): Logger
  • options — Logger configuration.
  • options.level — The minimum log level. Defaults to pass-through ('trace').
  • options.name — The logger name (used to create a named loglevel instance).

Returns: A Logger backed by loglevel.

getLevel()

Returns the current log level of the default loglevel instance.

function getLevel(): LogLevel

Returns: The current LogLevel (e.g. 'info', 'debug', 'warn').

setLevel(level)

Sets the minimum log level for the default loglevel instance.

function setLevel(level: LogLevel): void
  • level — The molecule log level to set.

Constants

levelMap

Map molecule log levels to loglevel levels.

const levelMap: Record<LogLevel, loglevel.LogLevelNumbers>

log

The underlying loglevel instance.

const log: loglevel.Logger

loglevel

The underlying loglevel instance.

const loglevel: loglevel.Logger

provider

The loglevel logger provider implementing the standard interface.

const provider: Logger

Core Interface

Implements @molecule/api-logger interface.

Bond Wiring

Setup function to register this provider with the core interface:

import { setLogger } from '@molecule/api-logger'
import { provider } from '@molecule/api-logger-loglevel'

export function setupLoggerLoglevel(): void {
  setLogger(provider)
}

Injection Notes

Requirements

Peer dependencies:

  • @molecule/api-logger ^1.0.1

Runtime Dependencies

  • @molecule/api-logger

  • loglevel

  • The provider passes every level through to loglevel — minimum-level filtering happens once, in @molecule/api-logger (LOG_LEVEL env var / setLevel(), default 'info'). Raw loglevel's own default level is WARN, which would otherwise silently swallow logger.info(...) out of the box.

  • Use this package's setLevel()/createLogger({ level }) only when you want an ADDITIONAL bond-side gate below the core's — a stricter level here makes the core's setLevel('debug') appear to do nothing.

  • trace delegates to console.trace, which prints a stack trace with every call (loglevel behavior, not a bug).