nodejs logger模块错误的上下文

时间:2017-06-10 20:40:56

标签: node.js

我有一个简单的nodejs记录器模块来打印'时间,上下文和消息'

module.exports = {
  init: (c) => {
    const config = c || {};
    const context = config.context || 'ROOT';
    console.log('test', c, config);
    return {
      d: (message) => {
        console.log(`${new Date()} [${context}] Debug - ${message}`);
      },
      i: (message) => {
        console.log(`${new Date()} [${context}] Info  - ${message}`);
      },
      w: (message) => {
        console.log(`${new Date()} [${context}] Warn  - ${message}`);
      },
      e: (message) => {
        console.error(`${new Date()} [${context}] Error - ${message}`);
      }
    }
  }
}

现在我需要来自我的应用程序内的其他模块的这个模块。

const logger = require('./logger').init('Database'); 要么 const logger = require('./logger').init('WebSocket');

但由于某些原因,我的控制台上的每次登录都会出现'ROOT',但是使用正确的c和config多次调用console.log('test', c, config);

我知道模块在一个应用范围内就像单身,但它被称为...... 任何想法?

2 个答案:

答案 0 :(得分:1)

因为当您致电require('./logger').init('Database')时,您的配置等于'数据库',因此config.context 未定义context默认为'ROOT'。

答案 1 :(得分:1)

调用init方法的方式格式不正确。

你应该写例如:

const logger = require('./logger').init({context:'Database'});