UNPKG

@notracking/node-mailin

Version:

Artisanal inbound emails for every web app using nodejs

69 lines (60 loc) 1.66 kB
"use strict"; const _ = require("lodash"); const util = require("util"); const winston = require("winston"); /* By default, only log to the console. To log to a file as well, a log file * path should be added explicitly. The logger object exposes the log, info, * warn and error methods. */ const logger = new winston.Logger({ levels: winston.config.npm.levels, transports: [ new winston.transports.Console({ colorize: true, prettyPrint: true, level: "warn" }) ] }); logger.setLogFile = function(logFilePath) { this.add(winston.transports.File, { filename: logFilePath, json: false, maxsize: 20000000, timestamp: true, level: "warn" }); }; /* Parameter level is one of 'silly', 'verbose', 'debug', 'info', 'warn', * 'error'. */ logger.setLevel = function(level) { if ( ["silly", "verbose", "debug", "info", "warn", "error"].indexOf(level) === -1 ) { logger.error( 'Unable to set logging level to unknown level "' + level + '".' ); } else { /* Verbose and debug have not exactly the same semantic in Node-Mailin and * Winston, so handle that. */ if (logger.transports.console.level === "verbose" && level === "debug") { return; } logger.transports.console.level = level; if (logger.transports.file) logger.transports.file.level = level; } }; logger._error = logger.error; logger.error = function(err) { if (err.stack) { this._error(err.stack); } else if (!_.isString(err)) { this._error( util.inspect(err, { depth: 5 }) ); } else { this._error.apply(this, arguments); } }; module.exports = logger;