| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | 'use strict';var colorspace = require('colorspace')  , enabled = require('enabled')  , kuler = require('kuler')  , util = require('util');/** * Check if the terminal we're using allows the use of colors. * * @type {Boolean} * @private */var tty = require('tty').isatty(1);/** * The default stream instance we should be writing against. * * @type {Stream} * @public */var stream = process.stdout;/** * A simple environment based logger. * * Options: * * - colors: Force the use of colors or forcefully disable them. If this option *   is not supplied the colors will be based on your terminal. * - stream: The Stream instance we should write our logs to, defaults to *   process.stdout but can be anything you like. * * @param {String} name The namespace of your log function. * @param {Object} options Logger configuration. * @returns {Function} Configured logging method. * @api public */function factory(name, options) {  if (!enabled(name)) return function diagnopes() {};  options = options || {};  options.colors = 'colors' in options ? options.colors : tty;  options.ansi = options.colors ? kuler(name, colorspace(name)) : name;  options.stream = options.stream || stream;  //  // Allow multiple streams, so make sure it's an array which makes iteration  // easier.  //  if (!Array.isArray(options.stream)) {    options.stream = [options.stream];  }  //  // The actual debug function which does the logging magic.  //  return function debug(line) {    //    // Better formatting for error instances.    //    if (line instanceof Error) line = line.stack || line.message || line;    line = [      //      // Add the colorized namespace.      //      options.ansi,      //      // The total time we took to execute the next debug statement.      //      ' ',      line    ].join('');    //    // Use util.format so we can follow the same API as console.log.    //    line = util.format.apply(this, [line].concat(        Array.prototype.slice.call(arguments, 1)    )) + '\n';    options.stream.forEach(function each(stream) {      stream.write(line);    });  };}/** * Override the "default" stream that we write to. This allows you to globally * configure the steams. * * @param {Stream} output * @returns {function} Factory * @api private */factory.to = function to(output) {  stream = output;  return factory;};//// Expose the module.//module.exports = factory;
 |