Venus 3.0.2 Released

转至元数据结尾
转至元数据起始

Venus 3.0.2增加Venus调用跟踪日志:

2013-10-21 11:14:48,385 DEBUG venus.tracer - receive id=d6863646-6b87-4e53-8d70-41068fc875e3,service=HelloService.sayHello,params={name:jack}
2013-10-21 11:14:48,394 DEBUG venus.tracer - receive id=f891fddf-537c-4195-82ea-d1d9384a2794,service=HelloService.sayAsyncHello,params={name:jack}
method sayAsyncHello invoked
2013-10-21 11:14:48,418 DEBUG venus.tracer - receive id=1e986970-0235-403d-a33b-ec9208781039,service=HelloService.sayHelloCallback,params={name:jack,callback:com.meidusa.venus.notify.ReferenceInvocationListener@28f19d6e}
2013-10-21 11:16:27,853 DEBUG venus.tracer - receive id=35fcb9ae-deb1-4b5e-abdf-707d49c826ef,service=HelloService.getHello,params={name:Jack}

主要在几个地方增加日志:

  • 发起Venus 服务请求 (request id=....)
  • 接收到服务请求 (receive id=....)
  • 接收到回调请求 (callback id=...)

Venus 日志格式:

* debug打印的信息:请求标识{request,receive,callback} id={uuid},service={apiName},params={request Param Json}
* Info 打印的信息:请求标识{request,receive,callback} id={uuid},service={apiName}
* warn或则error将忽略该日志
原理:
  1. 客户端:Venus通过ThreadLocal判断当前是否有请求表示初始请求的UUID,如果不存在则产生byte[16]数组,存储在com.meidusa.venus.util.ThreadLocalMap, Key="REQUEST_TRACE_ID",每次发起请求,则将这byte[16]通过数据包传输
  2. 服务端:接受到Venus客户端的请求,则解析数据包,获取byte[16],存储在com.meidusa.venus.util.ThreadLocalMap,以方便该线程的Venus调用使用,如果在该线程进行二次Venus调用,那么可以将这个byte[16] 带入这次请求
  3. 重置UUID:单线程或者后台系统如何分离不同的Venus请求? 每次调用Venus,如果一次调用作为一个完整的Venus调用,需要通过 com.meidusa.venus.util.ThreadLocalMap类 调用reset() 方法来清理 ThreadLocalMap中的byte[]
  4. 日志输出:通过UUID类,将byte[16]生成36个长度的字符串打印出来。

相关Log4j配置

     <logger name="venus.tracer" additivity="true">
        <level value="debug"/>
        <appender-ref ref="CONSOLE"/>
    </logger>
Enter labels to add to this page:
Please wait 
查找标签? 在此录入。