# monitor-usage
**Repository Path**: manong99898/monitor-usage
## Basic Information
- **Project Name**: monitor-usage
- **Description**: 一款基于 Javascript 的代码监控工具,用于实时监控和追踪目标代码使用情况,收集代码运行日志报告等。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://github.com/niu-grandpa/monitor-usage
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 14
- **Created**: 2023-12-06
- **Last Updated**: 2023-12-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Monitor Usage
一款基于 Javascript 的代码监控工具,用于实时监控和追踪目标代码使用情况,收集代码运行日志报告等。
## 特性
- 实时监控目标代码,自动响应报告信息。
- 追踪目标代码所在源文件位置。
- 统计目标代码平均使用率、访问时间等。
- 汇合所有报告信息,导出为日志文件。
- 记录目标被操作类型、使用频率、次数以及操作的时间等,详见下方API。
## 安装
### 使用 npm 或 yarn 安装
```shell
npm install monitor-usage --save
```
```shell
yarn add monitor-usage
```
### 浏览器引入
在浏览器中使用 script 标签直接引入文件,并使用全局对象 MonitorUsage。
```html
```
## 示例
> 注意:不支持目标为基本数据类型
### 监控 Object
```js
import MonitorUsage from 'monitor-usage';
const obj = {
name: 'ayin'
friends: {
name: 'zs',
age: 18
}
};
const monitor = MonitorUsage.stares(obj, (repo) => {
console.log('监控报告:', repo);
// do something... 例如上传或者保存监控报告等等
});
// 以下操作会自动触发监控回调执行
monitor.name;
monitor.friends.name;
monitor.name = 'AYIN';
monitor.age = 88; // 新增属性
```
### 监控 Function
> 强烈推荐使用`命名函数`作为监控目标,而不是匿名函数或直接写入函数
```js
function namedFn() {
return 'hello world!'
}
const fn = MonitorUsage.stares(namedFn, (repo) => {
console.log('监控报告:', repo);
// do something... 例如上传或者保存监控报告等等
});
fn();
```
还有其他的类型,这里不再不一一列举。
### TypeScript
`monitor-usage` 使用 TypeScript 进行书写并提供了完整的类型定义。
## API
| 属性 | 说明 | 类型 |
| ------ | ---------------------------- | ------------------------------------------------------------ |
| stares | 对目标进行监控 | (target: object, callback: (repo: `ReportInfo[]`) => void, options?:`Options`) => void |
| export | 导出所有监控日志为`json`文件 | (name?: string, path?: string) => promise |
### Options
选项字段说明
| 属性 | 说明 | 类型 |
| -------------------- | ----------------------------------------------------- | ------------------- |
| key | 唯一标识符。添加该key后,导出的报告文件才会包含该日志 | string \| undefined |
| isModifyValue | 允许修改属性值 | boolean |
| allowAdditionalProps | 允许添加新属性 | boolean |
| showErrorView | 捕获错误时在页面展示提示框 | boolean |
### ReportInfo
日志信息字段说明
| 熟悉 | 说明 | 类型 | 默认值 |
| -------------- | -------------------------------- | ------- | ---------- |
| status | 监控目标使用状态 | string | OK |
| source | 源目标 | any | - |
| useageName | 监控目标被访问的属性名 | string | - |
| usageCount | 监控目标的使用次数 | number | 0 |
| usageType | 监控目标的访问类型 | string | Unkown |
| usageTime | 监控目标当前使用时间 | string | new Date() |
| dailyUsageRate | 监控目标的日平均使用率 | string | 0% |
| info | 日志信息 | string | no problem |
| oldValue | 监控目标属性值修改前的旧值 | any | - |
| newValue | 监控目标属性值修改后的新值 | any | - |
| isNewlyAdded | 是否为新添加的属性 | boolean | false |
| whenToAdd | 何时添加的属性 | string | - |
| lastModify | 最后修改时间,属性值被修改时更新 | string | - |
| position | 监控目标所在源文件内的行列数 | string | - |
| filepath | 监控目标的文件路径 | string | - |