我试图强制log4j消息中的细节,而不是仅仅是一个字符串。最终我希望有类似的东西:
logger.info(“component”,“error code”,“error message”);
我甚至可以为组件使用枚举。
然后我希望该消息在日志中显示为“time - component - code - message”
有什么想法吗?
答案 0 :(得分:6)
一个非常简单的解决方案(针对这种特殊情况):
logger.info(
String.format("%s - %s - %s", "component", "error code", "error message"));
或改进版本:
logger.info(createMessage("component", "error code", "error message"));
与
public static String createMessage(
String component, String errorCode, String errorMessage) {
return String.format("%s - %s - %s",
"component", "error code", "error message");
}
对于更通用的解决方案,请考虑将原始Logger类包装到自定义记录器类中,并实现info
方法,该方法将三个参数和委托给基于输入的新消息internalLogger.info(String message)