vue项目log4js日志的封装

536 阅读3分钟
/**
 * log4js日志封装
 * @date 2022-11-25 21:06:17
 * @author NingYouyu
 */
// 引入log4js开始封装日志
const log4js = require("log4js")

// 定义级别,集中管理,防止日后不小心写错
const levels = {
    trace:log4js.levels.TRACE,
    debug:log4js.levels.DEBUG,
    info:log4js.levels.INFO,
    warn:log4js.levels.WARN,
    error:log4js.levels.ERROR,
    fatal:log4js.levels.FATAL,
}
// log4js配置,包括分类和追加器
// 定义相关配置
log4js.configure({
	// 追加器
	appenders: {
		// 追加器名字可以自定义
		console: {
			type: "console", // 控制台输出
		},
		// 追加器名字可以自定义
		trace: {
			type: "file", // 文件输出
			filename: "log/trace", // 文件名
			pattern: "yyyy-MM-dd.log", // 文件后缀
			alwaysIncludePattern: true, // 文件名和文件后缀结合, 类似 "trace.2022-10-07.log"
		},
		// 追加器名字可以自定义
		debug: {
			type: "file", // 文件输出
			filename: "log/debug", // 文件名
			pattern: "yyyy-MM-dd.log", // 文件后缀
			alwaysIncludePattern: true, // 文件名和文件后缀结合, 类似 "trace.2022-10-07.log"
		},
		// 追加器名字可以自定义
		info: {
			type: "file", //文件输出
			filename: "log/info", //文件名
			pattern: "yyyy-MM-dd.log", //文件后缀
			alwaysIncludePattern: true, //文件名和文件后缀结合, 类似 "trace.2022-10-07.log"
		},
		// 追加器名字可以自定义
		warn: {
			type: "file", //文件输出
			filename: "log/warn", //文件名
			pattern: "yyyy-MM-dd.log", //文件后缀
			alwaysIncludePattern: true, //文件名和文件后缀结合, 类似 "trace.2022-10-07.log"
		},
		// 追加器名字可以自定义
		error: {
			type: "file", //文件输出
			filename: "log/error", //文件名
			pattern: "yyyy-MM-dd.log", //文件后缀
			alwaysIncludePattern: true, //文件名和文件后缀结合, 类似 "trace.2022-10-07.log"
		},
		// 追加器名字可以自定义
		fatal: {
			type: "file", //文件输出
			filename: "log/fatal", //文件名
			pattern: "yyyy-MM-dd.log", //文件后缀
			alwaysIncludePattern: true, //文件名和文件后缀结合, 类似 "trace.2022-10-07.log"
		},
	},
	// 分类
	categories: {
		// default 分类必须要有, 否则报错
		default: {
			// 支持多个追加器
			appenders: ["console"],
			// 定义级别为 debug
			level: levels.debug,
		},
		// 分类名称可以自定义
		myTrace: {
			// 支持多个追加器, 下面代码的含义是trace级别的日志, 控制台打印, 同时输出到文件
			appenders: ["trace", "console"],
			// 定义级别为trace
			level: levels.trace,
		},
		// 分类名称可以自定义
		myDebug: {
			// 支持多个追加器, 下面代码的含义是debug级别的日志, 控制台打印, 同时输出到文件
			appenders: ["debug", "console"],
			// 定义级别为debug
			level: levels.debug,
		},
		// 分类名称可以自定义
		myInfo: {
			// 支持多个追加器, 下面代码的含义是info级别的日志, 控制台打印, 同时输出到文件
			appenders: ["info", "console"],
			// 定义级别为info
			level: levels.info,
		},
		// 分类名称可以自定义
		myWarn: {
			// 支持多个追加器, 下面代码的含义是warn级别的日志, 控制台打印, 同时输出到文件
			appenders: ["warn", "console"],
			// 定义级别为warn
			level: levels.warn,
		},
		// 分类名称可以自定义
		myError: {
			// 支持多个追加器, 下面代码的含义是error级别的日志, 控制台打印, 同时输出到文件
			appenders: ["error", "console"],
			// 定义级别为error
			level: levels.error,
		},
		// 分类名称可以自定义
		myFatal: {
			// 支持多个追加器, 下面代码的含义是fatal级别的日志, 控制台打印, 同时输出到文件
			appenders: ["fatal", "console"],
			// 定义级别为fatal
			level: levels.fatal,
		},
	},
});
// 定义相关的函数
/**
 * trace 日志输出
 * @param {string} content 输出的日志内容
 */
const trace = (content) => {
	// getLogger的参数是我们之前定义的分类名称
	const logger = log4js.getLogger("myTrace");
	// 触发一个 trace 日志
	logger.trace(content);
};
/**
 * debug 日志输出
 * @param {string} content 输出的日志内容
 */
const debug = (content) => {
	// getLogger的参数是我们之前定义的分类名称
	const logger = log4js.getLogger("myDebug");
	// 触发一个 debug 日志
	logger.debug(content);
};
/**
 * info 日志输出
 * @param {string} content 输出的日志内容
 */
const info = (content) => {
	// getLogger的参数是我们之前定义的分类名称
	const logger = log4js.getLogger("myInfo");
	// 触发一个 info 日志
	logger.info(content);
};
/**
 * warn 日志输出
 * @param {string} content 输出的日志内容
 */
const warn = (content) => {
	// getLogger的参数是我们之前定义的分类名称
	const logger = log4js.getLogger("myWarn");
	// 触发一个 warn 日志
	logger.warn(content);
};
/**
 * error 日志输出
 * @param {string} content 输出的日志内容
 */
const error = (content) => {
	// getLogger的参数是我们之前定义的分类名称
	const logger = log4js.getLogger("myError");
	// 触发一个 error 日志
	logger.error(content);
};
/**
 * fatal 日志输出
 * @param {string} content 输出的日志内容
 */
const fatal = (content) => {
	// getLogger的参数是我们之前定义的分类名称
	const logger = log4js.getLogger("myFatal");
	// 触发一个 fatal 日志
	logger.fatal(content);
};
// 导出
module.exports = {
	trace,
	debug,
	info,
	warn,
	error,
	fatal,
};