我试图强制log4j消息中的细节,而不是只是一个字符串.最终我希望有类似的东西:
logger.info("组件","错误代码","错误消息");
我甚至可以使用enum作为组件.
然后我希望该消息在日志中显示为"time - component - code - message"
有任何想法吗?
一个非常简单的解决方案(针对这种特殊情况):
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)与基于输入的新消息一起使用.