Log4j - 强制日志消息参数

时间:2011-06-09 10:30:30

标签: java log4j

我试图强制log4j消息中的细节,而不是仅仅是一个字符串。最终我希望有类似的东西:

logger.info(“component”,“error code”,“error message”);

我甚至可以为组件使用枚举。

然后我希望该消息在日志中显示为“time - component - code - message”

有什么想法吗?

1 个答案:

答案 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)