1.1.6 • Published 3 years ago
yunxin-log-debug v1.1.6
yunxin-log-debug
主要用于记录开发时的调试日志 基于loglevel封装
下载
$ npm install yunxin-log-debug --save使用
import logDebug from 'yunxin-log-debug'
const logger = logDebug(params);
logger.log('hello world');参数说明
level?
日志级别,同loglevel,低于该级别的日志不会显示在控制台
appName?
应用名称
version?
应用版本
storeWindow?
是否将日志对象存储到window中,便于开发或线上调试使用
通过 window.__LOGGER__ 访问
typescript 装饰器模式
项目中的 tsconfig 加上如下配置:
{
"compilerOptions": {
"experimentalDecorators": true
}
}使用
import { createLoggerDecorator } from 'yunxin-log-debug'
const loggerDec = createLoggerDecorator('module-name', console)
class A {
@loggerDec
syncFunc(num: number) {
return 'hello, world: ' + num
}
@loggerDec
asyncFunc(num: number) {
return new Promise((resolve) => {
setTimeout(() => {
resolve(num)
}, 300)
})
}
}
(async () => {
var a = new A()
await a.asyncFunc(1);
a.syncFunc(2)
})()createLoggerDecorator 是一个装饰器工厂
第一个参数是 moduleName,一般可填文件名
第二个参数是实现了 log 和 error 方法的日志类的实例,例如常见的console,或者自行实现的 logger 实例,如果不传,默认取当前上下文中的logger: this.logger
打印时机和打印内容
{
开始调用时: 模块名、方法名,参数
调用成功时: 模块名、方法名,调用结果
调用报错时: 模块名、方法名,错误内容,并将错误继续 throw 出去
}方法名被修改
代码压缩后,有些压缩工具会将类的方法名也替换成类似 a、b、c 的名称,导致装饰器装饰后打印的方法名不是开发时的方法名。如果遇到这个问题,可以在压缩工具的配置中配置成不要压缩方法名。