Log4j - 强制日志消息参数

1 java log4j

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

logger.info("组件","错误代码","错误消息");

我甚至可以使用enum作为组件.

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

有任何想法吗?

And*_*s_D 6

一个非常简单的解决方案(针对这种特殊情况):

logger.info(
      String.format("%s - %s - %s", "component", "error code", "error message"));
Run Code Online (Sandbox Code Playgroud)

或者在改进版本中:

logger.info(createMessage("component", "error code", "error message"));
Run Code Online (Sandbox Code Playgroud)

public static String createMessage(
                 String component, String errorCode, String errorMessage) {
   return String.format("%s - %s - %s", 
                 "component", "error code", "error message");
}
Run Code Online (Sandbox Code Playgroud)

对于更通用的解决方案,请考虑将原始Logger类包装到自定义记录器类中,并实现一个info方法,该方法将三个参数和委托internalLogger.info(String message)与基于输入的新消息一起使用.