【发布时间】:2021-02-25 08:10:48
【问题描述】:
我想将“字符串消息”分享给记录器和业务代码,因此我使用 String.format 创建了消息并将其放入记录器和我的业务代码中:
var msg = Messages.dateNotValid(user, getClass());
log.error(msg);
user.addMsg(msg);
Messages 将我所有的消息存储到一个类中:
class Messages {
public static dateNotValid(User user, Class<?> clazz){
return String.format("[%s] the date %s is not valid", clazz.getSimpleName(), user.getDate());
}
}
通常,我会以这种方式将消息添加到记录器:
// will not be parsed if log.error is disabled
log.error("the date {0} is not valid", user.date);
对于我想做的事情有更好的方法吗?我有点不确定我的代码。也许有一些我不知道的最佳实践(或有助于我实现目标的框架/apis/扩展点)。
【问题讨论】:
-
jboss-logging 在哪里发挥作用?您使用的是什么日志记录框架?
-
@JamesR.Perkins 在尝试了不同的选项后,我得出的结论是只有 jboss logger 有一个很好的补充,称为
@MessageLogger。 Thats exactly what I was looking for. I dont 知道其他日志框架是否也有此功能。唯一的缺点是让注解预处理器对文件进行预处理。 -
@JamesR.Perkins 你知道有更好的选择吗?
-
应该没有必要,假设您使用的是较新版本的 Maven,那么您不需要将它们添加到依赖关系树之外的任何内容中。他们可以是
<scope>provided</scope>
标签: java logging log4j2 jboss-logging