A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://www.npmjs.com/package/proc-log below:

proc-log - npm

Emits events on the process object which a listener can consume and print to the terminal or log file.

This is used by various modules within the npm CLI stack in order to send log events that can be consumed by a listener on the process object.

Currently emits log, output, input, and time events.

const { log, output, input, time } = require('proc-log')

Every log method calls process.emit('log', level, ...otherArgs) internally. So in order to consume those events you need to do process.on('log', fn).

Here's an example of how to consume proc-log log events and colorize them based on level:

const chalk = require('chalk')

process.on('log', (level, ...args) => {
  if (level === 'error') {
    console.log(chalk.red(level), ...args)
  } else {
    console.log(chalk.blue(level), ...args)
  }
})

log.pause and log.resume are included so you have the ability to tell your consumer that you want to pause or resume your display of logs. In the npm CLI we use this to buffer all logs on init until we know the correct loglevel to display. But we also setup a second handler that writes everything to a file even if paused.

let paused = true
const buffer = []

// this handler will buffer and replay logs only after `procLog.resume()` is called
process.on('log', (level, ...args) => {
  if (level === 'resume') {
    buffer.forEach((item) => console.log(...item))
    paused = false
    return
  } 

  if (paused) {
    buffer.push([level, ...args])
  } else {
    console.log(level, ...args)
  }
})

// this handler will write everything to a file
process.on('log', (...args) => {
  fs.appendFileSync('debug.log', args.join(' '))
})

producer.js

const { output, input } = require('proc-log')
const { readFromUserInput } = require('./my-read')

// Using callback passed to `start`
try {
  const res = await input.start(
    readFromUserInput({ prompt: 'OK?', default: 'y' })
  )
  output.standard(`User said ${res}`)
} catch (err) {
  output.error(`User cancelled: ${err}`)
}

// Manually calling `start` and `end`
try {
  input.start()
  const res = await readFromUserInput({ prompt: 'OK?', default: 'y' })
  output.standard(`User said ${res}`)
} catch (err) {
  output.error(`User cancelled: ${err}`)
} finally {
  input.end()
}

consumer.js

const { read } = require('read')

process.on('input', (level) => {
  if (level === 'start') {
    // Hide UI to make room for user input being read
  } else if (level === 'end') {
    // Restore UI now that reading is ended
  }
})
Using read to call read()

producer.js

const { output, input } = require('proc-log')

try {
  const res = await input.read({ prompt: 'OK?', default: 'y' })
  output.standard(`User said ${res}`)
} catch (err) {
  output.error(`User cancelled: ${err}`)
}

consumer.js

const { read } = require('read')

process.on('input', (level, ...args) => {
  if (level === 'read') {
    const [res, rej, opts] = args
    read(opts).then(res).catch(rej)
  }
})

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4