aop——Java MDC Logger——包含太多MDC的方法。put()
发布时间:2022-04-21 12:43:55 191
相关标签: # 工具
悬赏期满6天后.对这个问题的回答有资格获得 名誉赏金。帕特想吸引更多关注关于这个问题:
这是一个工作示例,在该示例中,无论日志中的方法和参数长度如何,我都可以看到所有参数。如果可能的话,寻找一个很好的解决方案,我可以重构我的30多个类,其中有更多行的MDC。这比实际逻辑更重要。非常感谢。
关于使用Java的MDC的小问题。
起初,我有一些非常简单的方法,一些方法有很多参数(我缩短了参数列表,以使问题简短,但请想象一下)很多(包括参数)
public String invokeMethodForPerson(int age, String name, boolean isCool, long distanceRun, double weight) {
LOGGER.info("begin to invoke method invokeMethodForPerson");
return methodForPerson(age, name, isCool, distanceRun, weight);
}
public String invokeMethodForCar(String model, boolean isElectric, long price, int numberOfDoors) {
LOGGER.info("begin to invoke method invokeMethodForCar");
return methodForCar(model, isElectric, price, numberOfDoors);
}
public String invokeMethodForFlower(String name, String color) {
LOGGER.info("begin to invoke method invokeMethodForFlower");
return methodForFlower(name, color);
}
(这个问题不是关于如何重构一长串参数)
然后,我想利用MDC.MDC非常有用,它允许在日志聚合器工具等中进行更好的搜索。将它们作为第一级,而不是日志记录器本身,这非常有用。
因此,为了利用MDC,代码从简单变成了类似的东西,下面是我尝试的。
public String invokeMethodForPerson(int age, String name, boolean isCool, long distanceRun, double weight) {
MDC.put("age", age);
MDC.put("name", name);
MDC.put("isCool", isCool);
MDC.put("distanceRun", distanceRun);
MDC.put("weight", weight);
LOGGER.info("begin to invoke method invokeMethodForPerson");
return methodForPerson(age, name, isCool, distanceRun, weight);
}
public String invokeMethodForCar(String model, boolean isElectric, long price, int numberOfDoors) {
MDC.put("model", model);
MDC.put("isElectric", isElectric);
MDC.put("price", price);
MDC.put("numberOfDoors", numberOfDoors);
LOGGER.info("begin to invoke method invokeMethodForCar");
return methodForCar(model, isElectric, price, numberOfDoors);
}
public String invokeMethodForFlower(String name, String color) {
MDC.put("name", name);
MDC.put("color", color);
LOGGER.info("begin to invoke method invokeMethodForFlower");
return methodForFlower(name, color);
}
问题:现在看看代码,实际上有更多行MDC.put()
而不是实际的业务逻辑代码
问题:除了增加成吨的生产线之外,还有没有更干净的方法来利用MDC的许多参数MDC.put()
,如果可能,请使用AOP/方面/建议/切入点?
非常感谢。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报