yunxin-log-debug
TypeScript icon, indicating that this package has built-in type declarations

1.1.6 • Public • Published

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,一般可填文件名 第二个参数是实现了 logerror 方法的日志类的实例,例如常见的console,或者自行实现的 logger 实例,如果不传,默认取当前上下文中的logger: this.logger

打印时机和打印内容

{
  开始调用时: 模块名、方法名,参数
  调用成功时: 模块名、方法名,调用结果
  调用报错时: 模块名、方法名,错误内容,并将错误继续 throw 出去
}

方法名被修改 代码压缩后,有些压缩工具会将类的方法名也替换成类似 abc 的名称,导致装饰器装饰后打印的方法名不是开发时的方法名。如果遇到这个问题,可以在压缩工具的配置中配置成不要压缩方法名。

Readme

Keywords

none

Package Sidebar

Install

npm i yunxin-log-debug

Weekly Downloads

93

Version

1.1.6

License

ISC

Unpacked Size

20.4 kB

Total Files

9

Last publish

Collaborators

  • netease-yunxin