个人第一个Nodejs 模块 Event.log

个人第一个Nodejs 模块 Event.log

地址 https://github.com/xeodou/event.log

简介
通过判断运行环境 env.NODE_ENV的值 确定 console 的信息是否显示 debug 环境下会输出到终端 production 环境下会通过事件传输console.log的值

支持log error warn trace raw 五种信息 终端显示时会用不同颜色区分

示例

安装 npm install event-log

使用

var console = require('event-log')
console.log('Hello world');
console.on('console.log', function(data) {
  //get data
})

效果

alt 效果图


4 回复

个人第一个Node.js模块 Event.log

地址

https://github.com/xeodou/event.log

简介

Event.log 是一个简单的Node.js模块,用于根据不同的运行环境(如开发环境 debug 和生产环境 production)来控制日志的输出。在开发环境中,日志信息会直接输出到终端,并且每种类型的信息会用不同的颜色进行区分。而在生产环境中,日志信息会被封装成事件并通过事件机制传递。

支持的日志类型

  • log
  • error
  • warn
  • trace
  • raw

安装

你可以通过以下命令安装 event-log 模块:

npm install event-log

使用示例

首先,你需要引入 event-log 模块:

var Console = require('event-log');

然后,你可以像使用原生的 console 对象一样使用 Console 对象:

// 输出一条普通日志
Console.log('Hello world');

// 输出一条错误信息
Console.error('This is an error message');

// 输出一条警告信息
Console.warn('This is a warning message');

// 输出一条跟踪信息
Console.trace('This is a trace message');

// 输出原始文本
Console.raw('This is raw text');

事件监听

你还可以通过监听事件来获取日志信息。例如:

Console.on('console.log', function(data) {
  // 处理接收到的日志数据
  console.log('Received log:', data);
});

Console.on('console.error', function(data) {
  // 处理接收到的错误信息
  console.error('Received error:', data);
});

运行环境判断

Event.log 模块会根据当前的 NODE_ENV 环境变量来决定如何处理日志信息。具体逻辑如下:

const env = process.env.NODE_ENV || 'development';

if (env === 'development') {
  Console.log = function(message) {
    console.log(`[DEBUG] ${message}`);
  };
  
  // 其他日志方法类似
} else if (env === 'production') {
  Console.log = function(message) {
    // 将消息封装成事件
    Console.emit('console.log', { message });
  };
  
  // 其他日志方法类似
}

效果展示

效果图

以上就是 Event.log 模块的基本使用方法和功能介绍。希望这个模块能够帮助你在不同的环境中更好地管理和控制日志输出。


顶一个~

核心模块不是有这功能吗?

根据你的描述,你可以创建一个简单的 Node.js 模块 event.log,该模块将根据运行环境的不同来处理日志记录。在开发(debug)环境下,它会直接输出到终端,而在生产(production)环境下,它会通过事件传输日志内容。

以下是实现此功能的基本代码:

// event-log.js

const colors = require('colors'); // 用于终端输出颜色

function log(type, message) {
    const env = process.env.NODE_ENV || 'debug'; // 获取当前运行环境,默认为 debug
    if (env === 'debug') {
        // 在开发环境中,直接打印日志,并使用不同颜色表示不同类型的日志
        switch (type) {
            case 'log':
                console.log(`[LOG] ${message}`.green);
                break;
            case 'error':
                console.error(`[ERROR] ${message}`.red);
                break;
            case 'warn':
                console.warn(`[WARN] ${message}`.yellow);
                break;
            case 'trace':
                console.trace(`[TRACE] ${message}`);
                break;
            case 'raw':
                console.log(message);
                break;
            default:
                console.log(`[${type.toUpperCase()}] ${message}`);
        }
    } else {
        // 在生产环境中,通过事件发射器发送日志信息
        const eventEmitter = require('events').EventEmitter;
        const emitter = new eventEmitter();
        emitter.emit(`console.${type}`, message);
    }
}

module.exports = log;

使用方式如下:

// 使用示例
const console = require('./event-log');

console.log('Hello world');

console.on('console.log', function(data) {
    console.error(`Received log in production: ${data}`);
});

这个模块会根据 process.env.NODE_ENV 的值决定如何处理日志。如果设置为 debug,则直接打印;如果设置为 production,则通过事件机制传递日志信息。你可以通过监听相应的事件来捕获这些日志信息。

回到顶部