我有一个简单的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);
。
我知道模块在一个应用范围内就像单身,但它被称为...... 任何想法?
答案 0 :(得分:1)
因为当您致电require('./logger').init('Database')
时,您的配置等于'数据库',因此config.context
未定义,context
默认为'ROOT'。
答案 1 :(得分:1)
调用init方法的方式格式不正确。
你应该写例如:
const logger = require('./logger').init({context:'Database'});