logger.js 1.21 KB
Newer Older
dengxiaofeng's avatar
dengxiaofeng committed
1 2 3 4
/* eslint-disable no-console */

const chalk = require('chalk');
const ip = require('ip');
邓晓峰's avatar
邓晓峰 committed
5
const pkg = require('../package.json');
dengxiaofeng's avatar
dengxiaofeng committed
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
const divider = chalk.gray('\n-----------------------------------');

/**
 * Logger middleware, you can customize it to make messages more personal
 */
const logger = {
  // Called whenever there's an error on the server we want to print
  error: err => {
    console.error(chalk.red(err));
  },

  // Called when express.js app starts on given port w/o errors
  appStarted: (port, host, tunnelStarted) => {
    console.log(`Server started ! ${chalk.green('✓')}`);

    // If the tunnel started, log that and the URL it's available at
    if (tunnelStarted) {
      console.log(`Tunnel initialised ${chalk.green('✓')}`);
    }

    console.log(`
${chalk.bold('Access URLs:')}${divider}
邓晓峰's avatar
邓晓峰 committed
28 29 30 31 32 33
Localhost: ${chalk.magenta(
      `http://${host}:${port}/${pkg.name.toLocaleLowerCase()}`,
    )}
      LAN: ${chalk.magenta(
        `http://${ip.address()}:${port}/${pkg.name.toLocaleLowerCase()}`,
      ) +
dengxiaofeng's avatar
dengxiaofeng committed
34 35 36 37 38 39 40 41 42
        (tunnelStarted
          ? `\n    Proxy: ${chalk.magenta(tunnelStarted)}`
          : '')}${divider}
${chalk.blue(`Press ${chalk.italic('CTRL-C')} to stop`)}
    `);
  },
};

module.exports = logger;