日志模块
模块代码:ibird-log
ibird的核心模块中并不包含任何日志模块,默认日志内容输出是采用console,如果你需要用到日志,那么需要额外引用该模块。
bunyan是一个简单而快速的JSON日志记录模块,ibird-log使用bunyan作为内部的日志处理器,你可以完全按照bunyan的配置来初始化你的日志对象。
初始化日志对象
首先你需要按自己的实际需要确定好配置,并使用配置初始化日志对象:
// 引用日志模块
const log = require('ibird-log');
// 初始化日志实例
const logger = log.config({
name: 'ibird-app',
hostname: 'www.example.com'
});
// 使用日志对象记录日志
logger.warn('我是警告日志');
logger.info('我是普通日志');
logger.error('我是异常日志');
Tips:日志对象只需要初始化一次即可,初始化成功后可通过log.logger来获取日志对象。
默认配置
日志模块的默认配置信息如下所示,详细的配置项bunyan已经描述得很清楚,这里不再赘述,有需要的请移步bunyan:
// 日志模块默认配置
const config = {
name: 'ibird', // 日志标记,一般为应用名称,会在记录日志时使用
streams: [ // 日志处理流
{
level: 'info', // 默认日志级别
stream: process.stdout // 输出到控制台
},
{
type: 'rotating-file', // 循环文件流,循环指定周期记录日志
level: 'error', // 错误级别
path: path.join(process.cwd(), `logs/${obj.name || 'ibird' }-error.log`), // 日志存放路径
period: '1d', // 按每天作为日志循环周期
count: 3 // 保存3个周期备份文件,即3天
},
{
type: 'rotating-file',
level: 'info',
path: path.join(process.cwd(), `logs/${obj.name || 'ibird' }.log`),
period: '1d',
count: 3
}
]
};
在ibird中的使用
首先你需要将初始化成功的实例注册到ibird的配置项中,然后ibird在运行时就会自动使用该日志实例来记录日志了,配置方式如下所示:
// 引用ibird核心模块
const app = require('ibird-core');
// 引用日志模块
const log = require('ibird-log');
// 初始化日志实例
const logger = log.config({name: 'ibird-app', hostname: 'www.example.com'});
// 注册实例到ibird配置项中
app.config('logger', logger);
// 使用日志对象记录日志
logger.warn('我是警告日志');
logger.info('我是普通日志');
logger.error('我是异常日志');
Tips:日志对象只需要注册一次,注册成功后可通过app.logger来获取日志对象,使用前确保logger对象已经实例化。
在非ibird环境中使用
ibird-log不单单是可以在bird中使用,你也完全可以在自己的应用中使用:
const log = require('ibird-log');
const logger = log.config({name: 'my-app', hostname: 'www.example.com'});
// 使用日志对象记录日志
logger.warn('我是警告日志');
logger.info('我是普通日志');
logger.error('我是异常日志');