1. 自定义日志输出器(Appender)
平台提供了扩展日志输出器的机制,支持自定义并注册日志输出器实现类。
1.1. 定义日志输出器类
日志输出器类只需要实现如下两个方法:
- constructor(config):构造方法
- append(loggerName, level, message, ...args):输出日志方法
- loggerName:使用该日志输出器的日志记录器名称
- level:日志级别
- message:日志信息
- args:可变的选项参数
下面以一个将日志输出到后端的场景为例。
import merge from "lodash.merge";
import {config, template} from "@zhoujianhui/ultra-log";
class BackendAppender {
config = {
pattern: config.logging.pattern,
date: config.logging.date
}
constructor(config) {
this.config = merge(this.config, config)
}
append(loggerName, level, message, ...args) {
const content = template(this.config.pattern, {
date: (new Date).toLocaleString([], this.config.date),
level: level.toUpperCase(),
logger: loggerName,
msg: message
})
// 省略将日志内容输出到后端
}
}
export default BackendAppender
1.2. 注册日志输出器类
import {logAppenderRegistry} from "@zhoujianhui/ultra-log"
import BackendAppender from "./BackendAppender"
loggerFactory.addAppenderClass(BackendAppender)
1.3. 初始化日志输出器和记录器
import {logAppenderRegistry} from "@zhoujianhui/ultra-log"
loggerFactory.init({
logging: {
appenders: [
{name: "backendAppender", class: "BackendAppender", config: {}}
],
loggers: [
{"name": "backendLogger", level: "info", appenderRef: "backendAppender"}
]
}
})
1.4. 使用日志记录器
import {logAppenderRegistry} from "@zhoujianhui/ultra-log"
const logger = loggerFactory.getLogger("backendLogger")
logger.info("测试日志")
此时日志就会被保存到后端。