Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PM2不';我不能挑出温斯顿在控制台里吐出来的错误_Javascript_Node.js_Mongodb_Pm2_Winston - Fatal编程技术网

Javascript PM2不';我不能挑出温斯顿在控制台里吐出来的错误

Javascript PM2不';我不能挑出温斯顿在控制台里吐出来的错误,javascript,node.js,mongodb,pm2,winston,Javascript,Node.js,Mongodb,Pm2,Winston,我对PM2和温斯顿都是新手。我对Winston有以下配置 logger.js 'use strict' const { createLogger, format, transports } = require('winston'); const configs = require('../app'); const ENV = configs.ENV; const logLevel = ((ENV.toLowerCase() === 'dev') || (ENV.toLowerCase() ==

我对PM2和温斯顿都是新手。我对Winston有以下配置

logger.js

'use strict'

const { createLogger, format, transports } = require('winston');
const configs = require('../app');
const ENV = configs.ENV;
const logLevel = ((ENV.toLowerCase() === 'dev') || (ENV.toLowerCase() === 'uat') ? 'debug' : 'info');

let customFormat = format(info => {
    if (info instanceof Error) {
        return Object.assign({}, info, {
            extra : info.extra,
            message: info.message,
            stack: info.stack
        });
    }
    else {
        return Object.assign({}, info, {
            message : info.message,
            data : info.data
        })
    }
})

let logger = createLogger({
    level : logLevel,
    format : format.combine(
        format.colorize(),
        format.simple(),
        format.timestamp(),
        customFormat()
    ),
    transports : [
        new transports.Console({
            handleExceptions : true,
            format : format.simple()
        })
    ],
    exitOnError : false,
})


exports.info = (message, additionalData) => {
    let logBody = {
        message : message,
        data : additionalData
    }
    logger.info(logBody);
}

exports.debug = (message, additionalData) => {
    let logBody = {
        message : message,
        data : additionalData
    }
    logger.debug(logBody);
}

exports.error = (message, error) => {
    error.extra = message;
    logger.error(error);
}
然后我有我的PM2配置文件 app.config.json

{
    "apps" : [
        {
            "name" : "app",
            "script" : "./src/app.js",
            "instances" : "1",
            "exec_mode" : "cluster"
        }
    ]
}
现在,当我使用命令
pm2 start app.config.json
运行应用程序并检查
~/.pm2/logs/app-error-0.log
上的错误日志时,我只看到记录了警告

应用程序崩溃并重新启动数次,因为它依赖于MongoDB,如果MongoDB未运行,则应用程序不得启动

但是,我没有看到错误日志打印在错误文件的任何地方

但是当我使用命令
node./src/app.js
运行同一个应用程序时,我看到控制台上打印了以下错误日志

error: failed to connect to server [127.0.0.1:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017] {"name":"MongoNetworkError",
"errorLabels":["TransientTransactionError"],
"extra":"Error connecting to APP DB: ",
"timestamp":"2019-01-21T12:18:15.354Z","stack":"MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]\n    at Pool.<anonymous> (/home/Auro/sampleProject/node_modules/mongodb-core/lib/topologies/server.js:564:11)\n................"}

我哪里做错了?为什么PM2没有在控制台上打印winston错误?我知道PM2与console.log配合得很好,但是我如何让它与winston配合呢?

评论这行
const logLevel=((ENV.toLowerCase()==='dev')|;(ENV.toLowerCase()=='uat')?'debug':'info')并生成
const logLevel='error'
并查看它是否捕捉到
错误
const logger = require('../../logger')
........
........
dbConnection.on('error', (err) => {
    logger.error('Error connecting to APP DB: ', err);
    process.exit(1);
})