Registry / observability / log
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.

npm install log
INSTALL
IMPORT
SIG · LOG
L
log
observabilityjavascriptv6.3.2
Install
Import
Disk
Pass rate
0/ 6
Env Coverage0 / 6
glibc
1822
musl
1822
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18226 runs
build_error
glibc
node 18226 runs
build_error
Code
Verified usage

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

log
import log from 'log';
const log = require('log');
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.
log.get
const namespaceLog = log.get('my-namespace');
import { get } from 'log'; // Incorrectly assumes `get` is a named export
The `get` method for creating namespaced loggers is an instance method of the default `log` object, not a direct named export.
log-node initialization
import 'log-node';
require('log-node'); // In ESM context, this should be an import statement
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.

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 issues
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`.
fix
Review the migration guide if you were using custom writers directly manipulating the internal master writer registration. For most users, updating `log-node` or other specific writer packages should resolve this.
affects: >=6.0.0
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.
fix
Adjust any custom code that directly compares or interprets log levels based on their numerical index. Rely on the named level methods (e.g., `log.error`, `log.debug`) rather than their underlying numerical values for future compatibility.
affects: >=5.0.0
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.
fix
Install a suitable writer package (e.g., `npm install log-node`) and ensure it is initialized at your application's entry point (e.g., `import 'log-node';` or `require('log-node')();`).
affects: >=1.0.0
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.
fix
For conditions that would typically map to `critical`, `alert`, or `emergency` severity, use standard JavaScript error handling mechanisms (e.g., throwing and catching exceptions, process error handlers) instead of attempting to log them through this utility.
affects: >=1.0.0
Errors
Common errors & fixes
No log messages appear in the console/output.
The `log` package requires a separate 'writer' module to process and output log events. It does not write to the console by default.
fix
Install and initialize a writer package, such as `log-node`, at the entry point of your application. Example: `npm install log-node` then `import 'log-node';` or `require('log-node')();`.
My 'error' messages are being treated as low severity, or 'debug' messages are high severity.
In version 5.0.0, the numerical indexing of log levels was reversed to align with RFC 5424. `error` is now 0 (highest severity), and `debug` is 4 (lowest severity).
fix
Ensure your code, especially any custom writers or filters, is aware of the reversed level indexing if you are comparing levels by their numerical values. It's safer to use the named methods (e.g., `log.error()`, `log.debug()`) rather than relying on index values.
Upgrade
Version history
6.3.2latest on npm
Audit
Dependencies
log-noderequiredRequired for logging output in Node.js environments. The `log` package itself only emits events, and needs a concrete writer to display or store logs. Other writers exist for different environments.
Agent activity
10 hits · last 30 days
node
8
OpenAI (training)
2
Resources
log — npm install log · libregistry