log4j2中配置logId唯一标识来标记同一个请求

本文介绍如何在Log4j2中使用ThreadContext为每次请求生成唯一标识(logId),并将其贯穿整个请求过程,包括前端和服务端。通过在log4j2.xml配置文件中指定PatternLayout,可以在日志输出中包含该唯一标识。
在项目的开发过程中,对于log打印时,一次request到response的请求,以及到响应到客户端的数据的请求,我们希望都能够串起来,因此,需要有一个唯一id来标识,这里我们通过log4j2中的logId来实现。
Log4j2中包含一个类:ThreadContext(实际上是一个本地线程)
可以自己生成一个唯一id:比如:uuid
logId = uuid;
然后在过滤器或者拦截器之前设置:ThreadContext.put("logId", logId);

log4j2.xml中配置如下:

<Console name="console" target="SYSTEM_OUT" follow="true">
    <PatternLayout pattern="[LOGID:%X{logId}] %d{yyyy/MM/dd HH:mm:ss} [%p] %c{1} (%F:%L) %msg%n" />
    <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
</Console>
即在pattern中添加{logId}来打印出logId的唯一标识。
PS:我们可以将logId通过response中设置header字段作为一个唯一标识,这样前端和服务端就通过logId完全贯穿起来。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值