node+pm2+log4js多进程输出日志

没安装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)…

猜你喜欢

转载自blog.csdn.net/sinat_15955423/article/details/102505157