【问题标题】:put String.format into logger?将 String.format 放入记录器?
【发布时间】: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,那么您不需要将它们添加到依赖关系树之外的任何内容中。他们可以是&lt;scope&gt;provided&lt;/scope&gt;

标签: java logging log4j2 jboss-logging


【解决方案1】:

实现我想要的最佳方法是使用 Jboss Logging 及其@MessageLogger。太好了。

在尝试了不同的选项后,我得出的结论是只有 jboss logger 有一个很好的添加,称为 @MessageLogger。这正是我一直在寻找的。我不知道其他日志框架是否也有这个。唯一的缺点是让注解预处理器对文件进行预处理。

我猜,jboss-logging 的另一个缺点是没有“无垃圾日志”(与 Log4j2 相比)。

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多