Javascript WinstonJS没有记录数据

Javascript WinstonJS没有记录数据,javascript,node.js,winston,Javascript,Node.js,Winston,首先看看我当前的WinstonJS配置: const appRoot = require('app-root-path'); const winston = require('winston'); const path = require('path') require('winston-daily-rotate-file'); const levels = { levels: { product: 1, error: 1, warn:

首先看看我当前的WinstonJS配置:

const appRoot = require('app-root-path');
const winston = require('winston');
const path = require('path')
require('winston-daily-rotate-file');

const levels = {
    levels: {
        product: 1,
        error: 1,
        warn: 3,
        info: 4,
        debug: 5
    },
    colors: {
        product: 'magenta',
        error: 'red',
        warning: 'yellow',
        info: 'green',
        debug: 'blue',
    }
}

let getLabel = function(callingModule){
    //To support files which don't have an module
    if(typeof callingModule == 'string'){
        return callingModule;
    }
    let parts = callingModule.filename.split(path.sep);
    return path.join(parts[parts.length -2], parts.pop());
}

const errorFilter = winston.format( (info, opts) => {
    return info.level == 'error' ? info : false;
})

const productFilter = winston.format( (info, opts) => {
    return info.level == 'product' ? info : false
})

module.exports = function(callingModule){
    const logger = winston.createLogger({
        levels: levels.levels,
        format: winston.format.combine(
            winston.format.colorize(),
            winston.format.timestamp({
                format: 'DD-MM-YYYY HH:mm:ss'
            }),
            winston.format.label({label: getLabel(callingModule)}),
            winston.format.printf(info => `[${info.timestamp}] [${info.level}] [${info.label}]: ${info.message}`)
        ),
        transports: [
            new winston.transports.DailyRotateFile({
                name: "Error logs",
                filename: `${appRoot}/logs/error-%DATE%.log`,
                level: 'error', 
                label: getLabel(callingModule),
                datePattern: 'YYYY-MM-DD',
                maxSize: '20m',
                maxFiles: '14d',
                format: winston.format.combine(
                    errorFilter(),
                    winston.format.colorize(),
                    winston.format.timestamp({
                        format: 'DD-MM-YYYY HH:mm:ss'
                    }),
                    winston.format.label({label: getLabel(callingModule)}),
                    winston.format.printf(info => `[${info.timestamp}] [${info.level}] [${info.label}]: ${info.message}`)
                ),
            }),
            new winston.transports.DailyRotateFile({
                name: "Product logs",
                filename: `${appRoot}/logs/product-%DATE%.log`,
                level: 'product',
                label: getLabel(callingModule),
                datePattern: 'YYYY-MM-DD',
                maxSize: '20m',
                maxFiles: '14d',
                format: winston.format.combine(
                    productFilter(),
                    winston.format.colorize(),
                    winston.format.timestamp({
                        format: 'DD-MM-YYYY HH:mm:ss'
                    }),
                    winston.format.label({label: getLabel(callingModule)}),
                    winston.format.printf(info => `[${info.timestamp}] [${info.level}] [${info.label}]: ${info.message}`)
                ),
            })
        ]
    })
    winston.addColors(levels.colors);

    let env = process.env.NODE_ENV;

    if (env !== 'production'){
        logger.add(new winston.transports.Console({
            name: "Debug logs",
            level: 'debug',
            label: getLabel(callingModule),
            prettyPrint: function ( object ){
                return JSON.stringify(object);
            }
        }))
    }
    else if (env !== 'development') {
        logger.add(winston.transports.DailyRotateFile({
            name: "Combined logs",
            filename: `${appRoot}/logs/combined-%DATE%.log`,
            level: 'error', 
            datePattern: 'YYYY-MM-DD-HH',
            maxSize: '20m',
            maxFiles: '14d'
        }))
    }

    logger.stream = {
        write: (message, encoding) => {
            logger.info(message);
        }
    }

    return logger;
}
这很好,我可以登录多个级别,某些级别将写入文件,具体取决于进程运行的环境

但是,我无法将诸如对象、数组甚至字符串之类的数据记录到我的控制台(可能还包括文件)。例如:

var dates = JSON.parse(req.query.dates);
console.debug("DATES", dates)
它只打印“日期”

我试图重新配置格式以打印数据,但无法使其工作

我试图在configs中添加json:true/false、winston.format.flat()、winstom.format.json()、${json.stringify(info.message)},但结果不同。 如何更改此配置以在控制台(和文件)中记录数据

我们正在从默认控制台()更改为winston,因此我们正在记录的数据是正确的,并且在更改之前它是有效的。仅将.log()更改为debug()