Node.js活动历史记录与日志

时间:2018-11-08 14:34:09

标签: javascript node.js logging

我想建立一个活动历史记录集合,其中存储有关动作的信息 表演者制作的。表演者可以是客户,供应商甚至是管理员。

目标是轻松,完整地获得每个用户所做的历史/日志/活动列表 管理。

这是我刚开始制作的Log类:

module.exports = class Log {

  constructor(req, params) {
    this.req = req;
    this.params = params;
    this.action;
  }

  createdEmployee(cb) {
    this.action = {
      type: "insert",
      title: "Created employee",
      title_translated: t["Created employee"],
      short_description: this.params.short_description || null
    }
    return this.insert(cb);
  }

  updatedSupplier(cb) {
    this.action = {
      type: "update",
      title: "Updated supplier",
      title_translated: t["Updated supplier"],
      short_description: this.params.short_description || null
    }
    return this.insert(cb);
  }

  insert(cb) {
    let newValues = {
      _supplier: this.req._supplier, // the organization id of the creator 
      _user: this.req._user, // the id of the creator
      action: this.action,
      date: new Date(),
      log: {
        old_record: this.params.old_record || {},
        new_record: this.params.new_record || {}
      },
      api_endpoint_metadata: {
        url: this.req.url,
        method: this.req.method
      }
    };
    db.logs.insert(newValues, function(err, docs) {
      if (err) return cb(err);
      return cb();
    });
  }

}

这是将其用于记录插入操作的方式:

let params = {
  short_description: "John Awesome",
  old_record: {},
  new_record: obj // some object with the new data to be inserted
}
let log = new Log(req, params);
log.createdEmployee(err => {
  // some code
});

这是用于记录更新操作的方法:

let params = {
  short_description: "Changed permission level",
  old_record: old_obj, // the current record - before changes
  new_record: obj // some object with the new data to be updated
}
let log = new Log(req, params);
log.updatedSupplier(err => {
  // some code
});

这样,我可以拥有一个集合来存储用户进行的活动的历史记录。

我的问题是-请允许我将其拆分为半子问题:

  1. 我应该叫课-日志吗?我担心的是它将与日志记录错误工具发生冲突, 例如温斯顿。我该如何称呼它,日志,活动或其他内容?

  2. 我做了一个自定义类,但也许您知道一个模块在做类似的事情-所以我可以参考 还是学习和比较的模块?

  3. 接下来,我要打印所做的更改-由日志收集提供(或如何命名)。 您知道显示这些更改的任何模块吗?我说的是Git如何显示变化。

0 个答案:

没有答案