Registry / observability / log

log

JSON →
library6.3.2jsnpmunverified

The `log` package provides a universal and pluggable logging utility designed for JavaScript applications, currently stable at version 6.3.2. It focuses on being configurable, environment, and presentation agnostic, differentiating itself by not handling output directly but emitting events for external 'writers' (e.g., `log-node` for Node.js environments). Releases are made as needed, with several maintenance and minor feature updates occurring within the last few years. Key features include syslog-compatible log levels (debug, info, notice, warning, error), `debug`-style namespacing for granular control, and support for printf-like message formatting with various placeholders (e.g., `%s`, `%d`, `%j`, `%o`). This design allows developers to write application logs once and integrate different output mechanisms without changing core logging logic. It does not expose `critical`, `alert`, or `emergency` levels, expecting these to be handled as typical exceptions. A crucial differentiator is its modular approach, requiring an explicit 'writer' package to actually emit log messages, making it highly adaptable to various runtime environments and output formats.

observabilityserialization
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

While `require('log')` is shown in older documentation, ESM `import` is the recommended modern approach for better static analysis and future compatibility. Both are currently supported in Node.js environments.

import log from 'log';

The `get` method for creating namespaced loggers is an instance method of the default `log` object, not a direct named export.

const namespaceLog = log.get('my-namespace');

To initialize the Node.js log writer, `log-node` should be imported for its side effects, typically at the entry point of your application. No specific symbol is imported, as it registers itself globally.

import 'log-node';

Demonstrates initializing the log system with `log-node`, creating default and namespaced loggers, logging at different levels, and dynamic enabling/disabling of log output.

import log from 'log'; import 'log-node'; // Initialize the Node.js writer for log output // Default logger (writes at 'info' level by default) log.info("Application started: %s", new Date().toISOString()); // Get a namespaced logger (similar to 'debug' library style) const myLibLog = log.get('my-lib'); myLibLog.info("Initializing 'my-lib' module with config: %j", { debug: true, port: 3000 }); // Namespaces can be nested const myLibFuncLog = myLibLog.get('func'); myLibFuncLog.debug("Executing critical function 'processData' for ID: %d", 12345); // Log an 'error' level message myLibFuncLog.error("Failed to process data due to an unexpected error. Details: %s", "Invalid input"); // Dynamically disable/enable logging for a specific level const { restore } = myLibFuncLog.debug.disable(); myLibFuncLog.debug("This debug message should not be logged."); restore(); // Restore previous visibility state myLibFuncLog.debug("This debug message should now be logged.");
Debug
Known footguns
breakingThe internal API for registering and accessing the master writer changed in v6.0.0. `lib/register-master` was removed in favor of `lib/get-master-writer`, and `lib/writer` was renamed to `lib/abstract-writer`.
breakingIn v5.0.0, the internal level indexes were reversed to align with RFC 5424 syslog severity order. `error` now has index `0`, and `debug` has `4`. This means custom logic or writers that relied on the numerical index of levels will need to be updated.
gotchaThe `log` package itself does not produce any output. It functions as an event emitter. To see logs in your console or other destinations, you *must* install and initialize a separate 'writer' package, such as `log-node` for Node.js environments.
gotchaThe `log` package intentionally does not expose `critical`, `alert`, or `emergency` syslog levels. These are deemed suitable for handling as typical JavaScript exceptions rather than log messages within application code.
Upgrade
Version history

Breaking-change detection hasn't run for this library yet.

Audit
Security & dependencies

CVE tracking and dependency tree are planned for a later release.

Agent activity
0 hits · last 30 days

No traffic data recorded yet.

Resources