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 🙏

© 2024 – Pkg Stats / Ryan Hefner

winstonjs-fingers-crossed-transport

v1.1.1

Published

Fingers crossed transport for WinstonJS logger

Downloads

12

Readme

Fingers Crossed Winston Transport

This library implements a transport for Winston loggers that works as a regular transport while the service is working normally but automatically switches to a verbose mode when an error occurs, in an attempt to provide more context to help diagnose the issue. In this verbose mode, the transport will print debugging messages that would normally be discarded.

Usage

import { FingersCrossedTransport } from '@kristijorgji/winstojns-transport-fingers-crossed'
import { createLogger, transports } from 'winston';

const transport = new FingersCrossedTransport(new transports.Console(), {
  // Prints all messages with level >= info and switches to verbose mode when a
  // message with level >= warn arrives
  standardLevel: 'info',
  activationLevel: 'warn',
});

const logger = createLogger({ transports: [transport] });

Configuration options

| Option | Description | |-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | standardLevel | Normal logging threshold, i.e., messages with a lower level won't be printed and messages with level greater than or equal will be printed immediately. Typically info or warn. | | activationLevel | Threshold level at the transport will switch to verbose mode and print detailed logging messages that were not displayed before. Typically warn or error | | maxItemsInBuffer | Maximum number of messages to keep in buffer in order to avoid memory leak if activation threshold is never reached. Defaults to undefined (no limit) | | resetOnActivation | If set to true then when activationLevel is reached all logs are flushed(logged) then logger is reset. Will not print out anything until next activation level is reached Defaults to true |

reset

When a message with logging level >= activationLevel arrives, the transport switches to verbose mode and starts logging all messages. To disable verbose mode call transport.reset(), as the following example shows:

import { FingersCrossedTransport } from '@kristijorgji/winstojns-transport-fingers-crossed'
import { createLogger, transports } from 'winston';

const transport = new FingersCrossedTransport(new transports.Console(), {
  standardLevel: 'info',
  activationLevel: 'warn',
});

const logger = createLogger({ transports: [transport] });

logger.debug('Debug message will not be printed immediately');

logger.warn('Warn message will be printed immediately, together with the debug message above');
logger.debug('This debug message will be printed immediately as well');

transport.reset();

logger.debug('This debug message will not be printed');