Javascript PM2不';我不能挑出温斯顿在控制台里吐出来的错误
我对PM2和温斯顿都是新手。我对Winston有以下配置 logger.jsJavascript 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() ==
'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);
})