Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@mocks-server/logger

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mocks-server/logger

Namespaced logger

  • 1.0.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
22K
decreased by-31.89%
Maintainers
1
Weekly downloads
 
Created
Source

Build Status Coverage Quality Gate Downloads Renovate License


Logger

Winston-based logger allowing to create nested namespaces. It provides:

  • Nested namespaces
  • Each namespace includes its "path" in the logs generated by it (the path is formed by its label appended to all its parent labels).
  • Coloured logs, with format: HH:mm:ss:SS [level][...parentLabel:parentLabel:label?] message
  • Store logs from each different namespace in a different array.
  • Store logs from all namespaces in a global store.
  • Each namespace log level can be set separately, and child namespaces can inherit the change or not.
  • Emit events whenever a log is added to any store.

Usage

A brief example:

const { Logger } = require("@mocks-server/logger");

// Create root logger
const logger = new Logger();

logger.setLevel("debug");

logger.info("Hello world");
// 18:41:43:16 [info] Hello world

const dbLogger = logger.namespace("db");

dbLogger.verbose("Hello from database component");
// 18:41:43:16 [verbose][db] Hello from database component

const dbConnectionLogger = dbLogger.namespace("connection");

dbConnectionLogger.debug("Connecting");
// 18:41:43:16 [debug][db:connection] Connecting

console.log(dbConnectionLogger.store);
/*
[ '18:41:43:16 [debug][db:connection] Connecting' ]
*/

console.log(logger.globalStore);
/*
[
  '18:41:43:16 [info] Hello world',
  '18:41:43:16 [verbose][db] Hello from database component',
  '18:41:43:16 [debug][db:connection] Connecting'
]
*/

API

Logger constructor

const logger = new Logger();
  • Logger(label?, options?). Returns a logger instance.
    • label (String): Label for the root namespace. Optional.
    • options (Object): Optional.
      • level (String): - Initial level, can be one of silent, error, warn, info, verbose, debug or silly.
      • storeLimit (Number): - Limit of logs to store in the root namespace store array. The option will be inherited by all children namespaces. Default is 1000.
      • globalStoreLimit (Number): - Limit of logs to store in the global store array, which stores logs from all nested namespaces. Default is 1000.

logger instance

  • error(message): The message will be logged always except if the current level is silent.
  • warn(message): The message will be logged always except if the current level is error or silent.
  • info(message: The message will be logged whenever the current level is not error, warn or silent.
  • verbose(message): The message will be logged whenever the current level is upper or equal than verbose.
  • debug(message): The message will be logged whenever the current level is upper or equal than debug.
  • silly(message): The message will be logged whenever the current level is upper or equal than silly.
  • setLevel(level, [options]): Sets the logger current log level for the current namespace and all children namespaces recursively.
    • level (String): Level can be one of silent, error, warn, info, verbose, debug or silly.
    • options (Object):
      • transport (String): The Winston transport in which the level has to be set. Can be one of console or store. If not provided, the level is set to all transports. In the root logger, changes in the store transport will be applied also to the globalStore transport.
      • propagate (Boolean): Propagates the level change to all children namespaces recursively or not. Default is true.
      • pinned (Boolean): When true, next level changes coming from propagations will be ignored and the transport/transports will keep the defined level. Default is false.
      • forcePropagation (Boolean): When true, the propagation will ignore pinned levels and will always override them.
  • namespace(label): Creates and returns a new child namespace or returns an already existent one when the label already exists. The returned namespace has the same Logger methods described here. The created namespace will inherit the current namespace level.
    • label (String): Label for the new namespace. It will be displayed as part of the log [label], appended to parent namespaces labels.
  • cleanStore() Empties the namespace store array.
  • onChangeStore(callback): Allows to add a listener that will be executed whenever a log is added to the current namespace store. It returns a function that removes the listener once executed.
    • callback() (Function): Callback to be executed.
  • onChangeGlobalStore(callback): Allows to add a listener that will be executed whenever a log is added to the global store. It returns a function that removes the listener once executed.
    • callback() (Function): Callback to be executed.
  • store: Returns an array with logs stored in the current namespace.
  • globalStore: Returns an array with logs stored in all namespaces, including those from the ancestors. There is only one global namespace for each Logger instance, no matter the amount of namespaces it has.
  • label: Getter returning the namespace label.
  • level: Getter returning the current namespace level.
  • root: Getter returning the root namespace instance.

Keywords

FAQs

Package last updated on 29 Jun 2022

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc