log4js中打印日志是否可以自动注入用户信息,IP等信息?
发布于 2 年前 作者 duanyunhu 1894 次浏览 来自 问答

最近有搭建node的项目使用koa2使用日志时用的是log4js V2.xx版本,以前写java中log4j中可以在filter中加入用户信息到MDC 输出的日志内容中就会包含用户信息(比如:pattern配置: [%x{userId}][%x{ip}]%m%n,filter把用户的userId,IP写入到日志MDC中),开发人员只需要写: log.info(“this is a test log”)就输出:

	[123][192.168.1.100]this is a test log

当前配置如下:

module.exports = {
	appenders: {
		out: {
			type: 'stdout',
			layout: {
				type: 'pattern',
				pattern: '[%z][%c][%p][%d{yyyy-MM-dd-hh:mm:ss.SSS}]%m%n'
			}
		},
		dateFile: {
			type: 'dateFile',
			filename: 'logs/app.log',
			pattern: '.yyyyMMdd',//备份日志时文件名格式
			compress: true,//是否压缩备份日志
			keepFileExt: true,//保留文件的拓展名
			layout: {
				type: 'pattern',
				pattern: '[%c][%p][%h][%d %r]%m%n'
			}
		}
	},
	categories: {
		default: {
			appenders: ['dateFile', 'out'],
			level: 'info'
		}
	}
}

以上配置中好像看官方文档中存在tokens可以自定义属性使用%x{user}注入到输出的日志中,但是tokens中怎么获取用户信息并保证每个人请求过来的时候打印日志都是自己的userInfo

回到顶部