# yunxin-log-debug

> 主要用于记录开发时的调试日志 基于[loglevel](https://github.com/pimterry/loglevel)封装

Latest version **1.1.6** (published 2022-11-07) · ISC license · 0 weekly downloads

## Install

```sh
npm install yunxin-log-debug
pnpm add yunxin-log-debug
yarn add yunxin-log-debug
bun add yunxin-log-debug
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.6 |
| Published | 2022-11-07 |
| First published | 2021-03-10 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 1 |
| Unpacked size | 19.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | netease-yunxin |

## Links

- npm: https://www.npmjs.com/package/yunxin-log-debug
- npm.io page: https://npm.io/package/yunxin-log-debug

## Dependencies (1)

- [loglevel](https://npm.io/package/loglevel.md) ^1.7.1

## Recent versions

- 1.1.6 (latest) — 2022-11-07
- 1.1.5 — 2022-11-07
- 1.1.4 — 2022-08-26
- 1.1.3 — 2022-06-17
- 1.1.2 — 2022-06-16
- 1.1.1 — 2022-04-01
- 1.1.0 — 2022-03-03
- 1.0.1 — 2021-03-30
- 1.0.0 — 2021-03-10

## README

# yunxin-log-debug
主要用于记录开发时的调试日志
基于[loglevel](https://github.com/pimterry/loglevel)封装

## 下载
```bash
$ npm install yunxin-log-debug --save
```

## 使用
```js
import logDebug from 'yunxin-log-debug'

const logger = logDebug(params);

logger.log('hello world');
```

## 参数说明
### level?
日志级别，同loglevel，低于该级别的日志不会显示在控制台

### appName?
应用名称

### version?
应用版本

### storeWindow?
是否将日志对象存储到window中，便于开发或线上调试使用
通过 `window.__LOGGER__` 访问

### typescript 装饰器模式
项目中的 `tsconfig` 加上如下配置：

```json
{
    "compilerOptions": {
        "experimentalDecorators": true
    }
}
```

#### 使用
```ts
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` 的名称，导致装饰器装饰后打印的方法名不是开发时的方法名。如果遇到这个问题，可以在压缩工具的配置中配置成不要压缩方法名。

---
_Source: https://npm.io/package/yunxin-log-debug · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
