UNPKG

docorm

Version:

Persistence layer with ORM features for JSON documents

82 lines 2.42 kB
import _ from 'lodash'; import winston from 'winston'; import { docorm } from './index.js'; const levels = { emergency: 0, alert: 1, critical: 2, error: 3, warn: 4, notice: 5, info: 6, http: 7, db: 8, debug: 9, verbose: 10 }; const isDevelopment = false; const level = () => { return isDevelopment ? 'debug' : 'db'; }; const colors = { emergency: 'red', alert: 'red', critical: 'red', error: 'red', warn: 'yellow', notice: 'yellow', info: 'green', http: 'magenta', db: 'magenta', debug: 'white', verbose: 'white' }; winston.addColors(colors); const formatMetadataAsText = (metadata) => { return _.map(Object.keys(metadata || {}), (key) => { const value = metadata[key]; if (value != null) { const formattedValue = _.isObject(value) || _.isArray(value) ? JSON.stringify(value) : value.toString(); return ` ${key}: ${formattedValue}`; } }).join('\n'); }; const textFormat = winston.format.combine(winston.format.errors({ stack: true }), winston.format.colorize({ all: true }), winston.format.metadata(), winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss:ms' }), winston.format.printf((info) => { const message = info.message; return [ `${info.timestamp} ${info.level}: ${message}`, ...(_.keys(info.metadata || {}).length > 0 ? [formatMetadataAsText(info.metadata)] : []) ].join('\n'); })); const jsonFormat = winston.format.combine(winston.format.metadata(), winston.format.errors({ stack: true }), winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss:ms' }), winston.format.json()); const transports = [ new winston.transports.Console({ format: isDevelopment ? textFormat : jsonFormat, handleExceptions: true }) /* new winston.transports.File({ filename: 'logs/error.log', level: 'error', format: jsonFormat })*/ ]; let _logger = null; export function setLogger(logger) { _logger = logger; } export default function logger() { if (!_logger && docorm.config.logger) { _logger = docorm.config.logger; } if (!_logger) { _logger = winston.createLogger({ level: level(), levels, // format, transports, exitOnError: false }); } return _logger; } //# sourceMappingURL=logger.js.map