在node项目中使用log4js记录日志
首页 >  NodeJs  > 2019年10月30日阅(32)评(0

本文所说的log4js实际上是指log4js-node,它是log4js到node.js的移植。

安装:npm i log4js -S,基本配置与使用方法可见其官方网站与文档

顾名思义,其输出级别level为:trace < debug < info < warn < error < fatal,当设置为info时,会输出info及其之后的级别日志;当设置为trace或all时,所有级别都将输出。

注意:categories中至少要把default给配置上,否则无法使用。

简单应用如下:

const log4js = require('log4js')

log4js.configure({
	appenders: {
		out: {
			//设置控制台输出
			type: 'console'
		},
		spiderLog: {
			type: 'dateFile',
			filename: './logs/spiderLog',
			pattern: '.yyyy-MM-dd.log',
			alwaysIncludePattern: true
		},
		testLog: {
			type: 'dateFile',
			filename: './logs/testLog',
			pattern: '.yyyy-MM-dd.log',
			alwaysIncludePattern: true
		}
	},
	categories: {
		default: {
			appenders: ['out', 'spiderLog'],
			level: 'all'
		},
		testCat: {
			appenders: ['out', 'testLog'],
			level: 'info'
		}
	}
})

const logger = log4js.getLogger()

// logger.trace('追踪级别')
// logger.debug('调试级别')
// logger.info('信息级别')
// logger.warn('警告级别')
// logger.error('错误级别')
// logger.fatal('致命错误级别')

export const loggerTest = log4js.getLogger('testCat')

export default logger

结果如图:

log4js记录日志1.jpg

log4js记录日志2.jpg

在koa.js项目中使用

在koa.js项目中可使用koa-log4js(npm i koa-log4 -S),作者对它进行了改造以支持“记录所有访问级别的日志”,而其他配置或用法仍与log4js一致。

新建一个logger.js文件内容如下:

const path = require('path');
const log4js = require('koa-log4');

log4js.configure({
	appenders: {
		access: {
			type: 'dateFile',
			filename: path.join('logs/', 'access'),
			pattern: '-yyyy-MM-dd.log',
			alwaysIncludePattern: true
		},
		application: {
			type: 'dateFile',
			filename: path.join('logs/', 'application'),
			pattern: '-yyyy-MM-dd.log',
			alwaysIncludePattern: true
		},
		out: {
			type: 'console'
		}
	},
	categories: {
		default: {
			appenders: ['out'],
			level: 'info'
		},
		access: {
			appenders: ['access'],
			level: 'info'
		},
		application: {
			appenders: ['application'],
			level: 'warn'
		}
	}
})

//记录所有访问级别的日志
exports.accessLogger = () => log4js.koaLogger(log4js.getLogger('access'))
//记录所有应用级别的日志
exports.logger = log4js.getLogger('application')

记录所有访问级别的日志

const Koa = require('koa')
const app = new Koa()

const { accessLogger } = require('./app/logger')
app.use(accessLogger())
// ...

假如你也有一个处理错误信息的中间件

const { logger } = require('../logger')

module.exports = async (ctx, next) => {
	try {
		await next()
	} catch (e) {
		logger.error(e)
		ctx.status = 200
		ctx.body = {
			code: e.status === 401 ? 555 : -1,
			msg: e && e.message ? e.message : e.toString()
		}
	}
}
js与android或ios交互前端部分

有朋自远方来...评论一下呗O(∩_∩)O哈哈~

QQ
昵称*
邮箱*
主页