tsw.jstsw.js

全息日志

通过日志可以洞见请求的全部

概念

  1. 生命周期 -- 即请求周期,接收到request请求开始,到response回包完成
  2. 用户标识 -- 当前请求用户标识,可以没有,以下简称UID
  3. 上下文 -- 与生命周期绑定的全局变量
  4. 全息日志 -- 生命周期内产生的日志
  5. 抓包 -- 生命周期内产生的IO日志
  6. 染色用户 -- 对于添加到白名单中的UID,称为染色用户

常用API

更多API参考logger.js

  1. 获取日志对象
     const logger = plug('logger');
    
  2. 获取当前请求用户标识
     const uid = logger.getKey();
    
  3. 设置当前请求用户标识
     logger.setKey(uid);
    
  4. 获取当前请求已产生的全息日志
     const text = logger.getText();
    

染色

  1. 染色用户的日志可实时查看
  2. 四种方式可对UID染色
    1. config.alphaFile本地文件中声明
       //染色文件格式:一行一个UID,字符集[0-9a-zA-Z_\-]{0,64}
       123456
       1234567 //备注
      
    2. config.alphaFileUrl远程文件中声明
    3. 临时染色 -- 当天有效,0点自动清除
    4. 添加测试环境 -- 当天有效,0点自动清除

查看实时日志

  1. 实时日志保留最新64条,滚动记录,24h过期
  2. 访问https://${appid}.tswjs.org/log/view/${UID}即可
    1. appid -- 应用对应的appid
    2. uid -- 对应染色的uid

实现原理

  1. 利用上下文全局可见的特性
  2. 日志产生时,将处在低维的日志发送给上下文
  3. 生命周期结束时,从上下文中获取其持有的日志,决策上报或是丢弃
  4. 在管理端将上报的全息日志显示出来
  5. 抓包可以看成是IO产生的非文本日志,提供下载

故障排除

  • 对用户染色后,实时日志为空,排查清单
    1. 确认是染色用户,即UID在以下白名单内即可,(之一即可)
      • config.alphaFile
      • config.alphaFileUrl
      • 临时染色名单
      • 测试环境名单
    2. 确认代码运行过程中有声明过用户UID,且UID与染色相对应
      • 可调用logger.setKey(uid)声明当前请求的UID
    3. 确认运行时debug日志有输出logType: alpha关键字
    4. 排查openapi.tswjs.org域名是否连通,特别是443端口
    5. 确认appid+appkey无误,并重启使其生效
    6. 如果以上还不能解决,直接联系TSW协助排查