Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const path = require('path');
- const util = require('util');
- const { createLogger, format, transports } = require('winston');
- const dbConfig = require('./config').mongodb;
- const betterSplat = format((info, opts) => {
- let argsArray = info[Symbol.for('splat')];
- if(argsArray) {
- let i = 0;
- while(info.message.indexOf('%s') !== -1 && argsArray[i])
- info.message = info.message.replace('%s', util.inspect(argsArray[i++]));
- for(; i < argsArray.length; ++i)
- info.message += ' ' + util.inspect(argsArray[i]);
- }
- return info;
- });
- const infoKeys = [
- 'level',
- 'message',
- 'timestamp',
- 'label',
- 'stack'
- ];
- let transport;
- let exitOnError;
- const formats = [
- format.timestamp({ format: 'DD/MM HH:mm:ss' }),
- format.label({ label: path.basename(process.mainModule.filename) }),
- format.errors({ stack: true }),
- format.splat(),
- //betterSplat(),
- format.printf(info => {
- // console.debug(info);
- // for(let k in info)
- // if(infoKeys.indexOf(k) === -1)
- // info.message += ' ' + util.inspect({[k]: info[k]});
- info.message = typeof info.message === 'object' ? util.inspect(info.message) : info.message;
- return `${info.timestamp} ${info.level} [${info.label}] ${info.message} ${info.stack || ''}`;
- })
- //format.json()
- ];
- if (process.env.NODE_ENV == 'production' || process.env.NODE_ENV == 'prod') {
- require('winston-mongodb');
- transport = new transports.MongoDB({
- level: 'debug',
- db: dbConfig.url + '/' + dbConfig.db,
- collection: dbConfig.collection,
- username: dbConfig.username,
- password: dbConfig.password,
- label: path.basename(process.mainModule.filename),
- handleExceptions: true,
- format: format.metadata({ fillWith: ['stack'] })
- });
- exitOnError = false;
- } else {
- formats.unshift(format.colorize());
- transport = new transports.Console({
- level: process.env.NODE_ENV == 'debug' ? 'debug' : 'info',
- handleExceptions: true
- });
- exitOnError = true;
- }
- const logger = createLogger({
- level: 'debug',
- exitOnError,
- transports: [transport],
- format: format.combine(...formats)
- });
- module.exports = logger;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement