没安装pm2前先全局安装一下
npm install pm2 -g
集群配置log4js
项目启动文件配置:
const http = require('http');
const log4js = require('log4js');
const app = require('../app');
//require('./eureka')
const defaultPort = 3007;
// 初始化 log4js
log4js.configure(require('../config/log4js_config'));
const logger = log4js.getLogger('startup');
// 监听未捕获异常
process.on('uncaughtException', err => {
if (err) {
let msg = err;
if (err.stack) {
msg = err.stack;
} else if (err.message) {
msg = err.message;
}
logger.error(`ERROR: ${
msg}`);
}
});
if(process.env.NODE_ENV !== 'development'){
app.set('port', process.env.PORT || defaultPort);
const port = app.get('port');
const server = http.createServer(app);
server.listen(port, '0.0.0.0',() => {
logger.info(`服务器已启动,访问 http://127.0.0.1:${
port}`);
});
server.on('error', error => {
if (error.syscall !== 'listen') {
throw error;
}
switch (error.code) {
case 'EACCES':
logger.error(`没有权限设置端口:${
port}`);
process.exit(1);
break;
case 'EADDRINUSE':
logger.error(`端口:${
port} 已被占用`);
process.exit(1);
break;
default:
throw error;
}
});
}
module.exports = app;
log4js_config.js
module.exports = {
pm2: true,
pm2InstanceVar: 'www',
disableClustering: true, // 采用集群模式时log4js不打印日志,设置禁用
appenders: {
console: {
type: 'console'
}
},
categories: {
default: {
appenders: ['console'],
level: 'info'
}
}
};
多进程启动项目
pm2 start bin/www -i 0
bin/www 是项目的启动文件
0代表计算机有多少个核心就运行多少个进程,如果想开三个进程就把0改成3
查看进程:
pm2 list
查看日志:
pm2 logs
停止运行:
pm2 stop www
stop只是停止项目了 并没有关闭掉进程
关闭进程:
pm2 delete www
如何写打印日志
logger.info(xxx
)
logger.error(xxx
)…