项目上提到调用链,需要搜集某个请求的日志入ES库中;方便后台报错请求能及时看到异常信息,此处有一个重点功能,就是在代码中获取当前控制台生成的日志;
这里介绍一个采集日志的功能;
public class CallLogAppender extends AppenderBase<ILoggingEvent>{
protected static final Charset UTF_8 = Charset.forName("UTF-8");
protected Encoder<ILoggingEvent> encoder;
public void start() {
super.start();
}
@Override
protected void append(ILoggingEvent event) {
//在这里获取event中的内容,控制台每输出一行日志这里调用一次,通过在这里能采集到当前请求的日志;
}
}
有了这个功能,那么可以做一些基于请求线程的调用链,可能采集入参、出参、header、IP、mac地址、用户ID、时间等信息,用于日志排查需要;