Skip to content

Commit

Permalink
ajax 请求头加入请求id
Browse files Browse the repository at this point in the history
  • Loading branch information
eshengsky committed Aug 25, 2017
1 parent 46c7485 commit 34d7bc0
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 33 deletions.
34 changes: 27 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ lajax 尝试解决这些问题:

* 自动记录 ajax 请求的开始和完成;

* 自动生成基于请求的唯一 id,方便日志定位
* 自动生成 [请求id](#请求id),方便日志定位和关联

* 日志会定时批量发送到配置的日志服务器;

Expand Down Expand Up @@ -218,12 +218,28 @@ try {
}
```

### showQueue()
### queue

实例方法,显示当前的日志队列
array 类型属性,当前待发送的日志队列

```js
logger.info(logger.showQueue());
logger.queue
```

### reqId

string 类型属性,当前页面的请求 id。

```js
logger.reqId
```

### idFromServer

boolean 类型属性,请求 id 是否来自于服务端生成。

```js
logger.idFromServer
```

### colorEnum{...}
Expand Down Expand Up @@ -307,13 +323,17 @@ logger.warn('这是一条warn日志');

发送到服务器的每一条日志,都包含一个请求 id。在同一次请求中,所有日志的请求 id 一定相同;在不同请求中,各自记录的日志的请求 id 一定不同。

该请求 id 的主要目的:让你能够在服务端精确定位到某次请求过程中的所有相关日志。
例如:用户甲访问 index.html 过程中 lajax 记录并发送了 10 条日志,这 10 条日志的请求 id 是相同的;用户乙也访问了该页面,同样产生了 10 条日志,这些日志的请求 id 也一定是相同的,但和用户甲的请求 id 不同。

请求 id 的主要目的:让你能够在服务端精确定位到某次请求过程中的所有相关日志。

请求 id 的生成逻辑
请求 id 的生成和发送

* 如果你的页面是服务器端动态生成的,你想将服务端的日志和前端的日志串联起来,你可以在服务端生成一个请求 id,并发送到前端。lajax 会依次尝试从页面的 `<meta name="_reqId" content="xxxx-xxx">` 内容中或者 `window._reqId` 中寻找请求 id;

* 如果上述的寻找失败了,则认为你的页面是一个纯前端的页面,lajax 将会在初始化时生成一个基于时间的唯一 id 来作为请求 id,在页面卸载之前,所有的日志都将包含该请求 id。
* 如果上述的寻找失败了,则认为你的页面是一个纯前端的页面,lajax 将会在初始化时生成一个基于时间的唯一 id 来作为请求 id,在页面卸载之前,所有的日志都将包含该请求 id;

* 对于监听到的 ajax 请求,上述请求 id 会被添加到 `X-Request-Id` 请求头中,你可以在服务端日志中记录该请求 id 以做关联。

## 服务器示例

Expand Down
18 changes: 5 additions & 13 deletions dist/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -378,9 +378,13 @@
// 请求开始时间
var startTime = new Date();

// 添加一条日志到队列中,排除掉用户自定义不需要记录日志的 ajax
// 排除掉用户自定义不需要记录日志的 ajax
if (that.logAjaxFilter(this._lajaxUrl, this._lajaxMethod)) {
// 添加一条日志到队列中
that._pushToQueue(startTime, Lajax.levelEnum.info, '[ajax] \u53D1\u9001' + this._lajaxMethod.toLowerCase() + '\u8BF7\u6C42\uFF1A' + this._lajaxUrl);

// 请求头中添加请求 id
this.setRequestHeader('X-Request-Id', that.reqId);
}

// 添加 readystatechange 事件
Expand Down Expand Up @@ -797,18 +801,6 @@

this._log.apply(this, [null, Lajax.levelEnum.error].concat(args));
}

/**
* 显示当前的日志队列
*
* @memberof Lajax
*/

}, {
key: 'showQueue',
value: function showQueue() {
this._log(null, Lajax.levelEnum.info, this.queue);
}
/* eslint-enable no-console, no-bitwise*/

}]);
Expand Down
Loading

0 comments on commit 34d7bc0

Please sign in to comment.