javassist 增强es日志

  1. 背景
    为了保障线上每条日志耗时情况可以定位,需要针对每个查询新增qid来标识,并且记录每条查询的每个shard在每台机器上的耗时情况。
  2. ClassFileTransformer
    主要分成三步:
    2.1 SearchRequestTransformer
    该类实现自ClassFileTransformer, 主要是在elasticsearch的SearchRequest类加上一个qid属性,并生成getQid和setQid方法
    2.2 RestSearchActionTransformer
    该类实现自ClassFileTransformer, 获取到parseSearchRequest方法,把request中的qid参数赋值给searchRequest对象中的Qid
    2.3 AbstractSearchAsyncActionTransformer
    该类实现自ClassFileTransformer, 获取AbstractSearchAsyncAction类,在onShardResult中insetBefore方法获取到每个shard执行的耗时情况。并且生成一个Logger对象(LogManager.getLogger(name) ,name为log4j2.properties中logger的名称,这样可以保证日志写入到指定文件中)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容