如何在春天为每个请求维护唯一的id

时间:2015-06-03 14:13:35

标签: spring

我需要为每个请求维护一个唯一的Id,因为我们在另一个文件中写入信息和错误日志,为了跟踪这个请求,我们得到了这个错误和信息消息。我将Unicode作为每个方法的附加参数传递,这看起来很糟糕。春天有任何替代选择可以处理这些东西。

示例跟踪标识:

信息-file.log

uniqueId1 request1 

错误file.log

uniqueId1 error1
uniqueId2 error2

为了实现这一点,我们在控制器,服务和dao层的每个方法中传递uniqueId。

1 个答案:

答案 0 :(得分:0)

如果您使用log4j,则可以在控制器/服务的最开始使用一次

MDC.put("uniqueId", your id here);

然后,在你的log4j配置中,你可以像这样使用%X {uniqueId}:

log4j.appender.default.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c [%X{uniqueId}] -> %m%n

完成后(在请求结束时)您只需:

MDC.remove("uniqueId");