是否可以为Node.js中的每个Postgresql模式创建单独的日志?

时间:2018-12-27 18:03:05

标签: node.js postgresql pm2

我正在将nodejs与postgres数据库和许多模式一起使用(以及pm2作为流程管理器)。 每个模式都是一个用户,因此在每个查询中,我都将模式名称作为参数传递。 目前,所有console.logs都写在一个由pm2旋转的文件中。  我的目标是为每个架构/用户创建单独的日志,例如user_1.log,user_2.log等。 有没有一种方法/节点模块可以做到这一点?

谢谢

1 个答案:

答案 0 :(得分:1)

启动pm2进程时如何传递自定义日志文件路径和环境变量?

SCHEMA_USER=user_1 pm2 start app.js -i 1 -o ./logs/user_1.log -e ./logs/user_1.err

SCHEMA_USER=user_2 pm2 start app.js -i 1 -o ./logs/user_2.log -e ./logs/user_2.err

或者您可以使用simple-node-logger并进行记录器存储,以存储将记录到所需位置的对象。

在具有以下内容的地方创建log-manager.js

const path = require('path');
const SimpleNodeLogger = require('simple-node-logger'),

class LogManager {
  static instances = {};

  static get(key) {
    if (!key) return console;
    if (Logger.instances[key]) return Logger.instances[key];

    const opts = {
        logFilePath: path.join(__dirname, 'logs', key+'.log'),
        timestampFormat: 'YYYY-MM-DD HH:mm:ss.SSS'
    },
    return Logger.instances[key] = SimpleNodeLogger.createSimpleLogger(opts);
  }
}

module.exports = LogManager;

并将其用于快递应用程序中

const logManager = require('./log-manager');

request.get('/users/:id', (req, res) => {
  const logger = logManager.get('user_' + req.params.id);
  // doing somethings
  logger.error('User not found');
  req.status(404).send({});
});