@ursajs/logger
ursajs日志系统规划
使用说明
const Logger = require('@ursajs/logger');
Logger.init({
level: 'DEBUG',
dir: '/path/to/your/custom/log',
errorLogName: 'errorlogger.log',
infoLogName: 'infologger.log',
warnLogName: 'warnlogger.log',
encoding:'utf-8',
outputJSON:true,
consoleLevel:'debug',
allowDebugAtProd:true,
});
or
const {UrsaLogger } = require('@ursajs/logger');
const Logger = new UrsaLogger({
...options
})
or
const {UrsaLogger } = require('@ursajs/logger');
const Logger = UrsaLogger.instance({
...options
});
Logger.info('info');
Logger.debug('debug');
Logger.warn('warn');
Logger.error('error');
如果用户需要使用ctx上的数据可直接使用contextLogger
import {ContextLogger} from '@ursajs/logger';
app.use(async ctx => {
ctx.logger = ContextLogger(ctx, options)
ctx.logger.info('ctxLogger-info');
ctx.body = 'Hello World';
});
配置属性
{
level: 'DEBUG',
dir: '/path/to/your/custom/log',
errorLogName: 'errorlogger.log',
infoLogName: 'infologger.log',
warnLogName: 'warnlogger.log',
file: '/path/to/your/custom/log/logger.log',
encoding:'utf-8',
outputJSON:true,
consoleLevel:'debug',
allowDebugAtProd:true,
flushInterval: 1000,
maxBufferLength: 1000,
formatter: function(meta?:TConsoleMeta) {
return `[${meta.level} ${meta.pid}] ${meta.date} ${meta.hostname} ${meta.paddingMessage}: ${meta.message}`;
},
splitTime: '00 00 * * * *'
};
日志级别
日志分为ALL DEBUG INFO WARN ERROR NONE
6个级别。默认会同时打印INFO
及以上级别的日志到文件和终端,可自定义日志输出级别:
1.文件日志级别(默认INFO
)
exports.logger = {
level: 'ALL'
};
2.终端日志级别(默认INFO
)
exports.logger = {
consoleLevel: 'NONE'
};
consoleLevel
优先级高于level
,consoleLevel
仅对终端输出生效。
日志输出如下所示:
[DEBUG 24053] 2019-08-01 18:57:20,573 liumindeMacBook-Pro.local: debug
[INFO 24053] 2019-08-01 18:57:20,574 liumindeMacBook-Pro.local: info GET
[WARN 24053] 2019-08-01 18:57:20,575 liumindeMacBook-Pro.local: warn
[ERROR 24053] 2019-08-01 18:57:20,576 liumindeMacBook-Pro.local: error
3.生产环境关闭打印debug日志,默认关闭
exports.logger = {
allowDebugAtProd: ture
};
日志文件输出
- 文件编码,默认编码为
utf-8
,可自定义 - 日志文件输出格式默认为JSON
exports.logger = {
encoding: 'gbk',
outputJSON: true
};
日志切割
- 默认按天切割,在每日
00:00
按照.log.YYYY-MM-DD文件名切割。