当前位置: 首页 > 知识库问答 >
问题:

父类中的Slf4j记录器日志字段

昌琪
2023-03-14

我有以下代码:

@Slf4j
public class Main {

@Data
public static class AClass {
    private String title;
}

@Data
public static class BClass extends AClass {
    private Integer amount;
}

public static void main(String[] args) {
    BClass bClass = new BClass();
    bClass.setAmount(12);
    bClass.setTitle("title");

    log.info("{}", bClass);
}
}

日志中,我只能看到来自BClass而不是AClass的字段:

17:52:28.151[main]INFO Main-Main. BClass(金额=12)

但是我想查看所有BClass字段,包括父类中的字段(标题字段)。我该怎么做?

共有1个答案

闻人鸿飞
2023-03-14

这很正常——你看到的(特别是日志中的Main.BClass(amount=12)部分)是toString()方法BClass的输出。@Data注释正在为您创建一个toString实现。然而,lombok通常故意不包含超类信息。您应该会在@Data注释上看到一条警告来解释这一点。解决这个问题的一种方法是在@Data注释旁边添加@ToString(callSuper=true)

这与SLF4J或任何日志框架无关-它与生成的toString()实现中的内容和不内容有关。

 类似资料:
  • 我将slf4j日志接口与JDK logger一起用于我的web服务项目。我实际上一直在使用Java util日志记录,目前正在考虑将slf4j与JDK logger结合使用。我在ivy中包含了slf4j-jdk14-1.7.12 jar文件依赖项。xml文件 在我的一门课上,我有以下几点: 运行这个类/方法后,我没有看到任何日志输出到控制台或任何日志文件。目前使用的java util日志框架将日志

  • 我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?

  • 在我的Java应用程序中,我使用SLF4J+Logback进行日志记录。我在开发环境中使用调试级日志记录,在生产环境中使用错误级日志记录。但是有一些消息我无论如何都想要记录下来,无论日志级别如何(类似于,但使用的是logger)。 有什么切实可行的方法可以实现这一点吗?我可以使用error或更低的级别,但我想做的是给出一些信息,所以在语义上是错误的,它不是错误。 我可以在我的中为我的类定义另一个记

  • 我最近接到的任务是开始构建一个新的Spring 3 MVC项目(在这方面我是新手)。在开普勒设置了大部分POC项目后,我有: 一个原型Web应用程序(HelloWorld样式),可以部署并在(外部)Tomcat7中工作。 已配置日志并报告给控制台: 但是当我进入我的代码使用类方法时(我尝试了和两种风格),Eclipse无法识别Logger实例中的方法: 键入 后 Eclipse 代码助手显示以下选

  • 问题内容: 这是一个第三方应用程序,在我们的应用程序服务器上生成大量的登录信息。像这样: 如何关闭slf4j的输出?我已经在.war文件中查找了slf4j的一些配置,但没有找到任何配置。他们的网站也没有帮助 问题答案: slf4j只是实际日志后端(此处是覆盖jakarta commons日志记录)的一个漏斗,这是您必须配置的摆脱某种消息的程序。对于登录,这是适当的配置代码段: 对于log4j,它非

  • 我在一个类中创建了3个不同的slf4j记录器: 奇怪的是,即使在调试级别配置了X.Y.Z.MyClass,MyClass-a和MyClass-b记录器也不是在调试级别记录日志,而是在配置的根级别记录日志(在我的例子中是info)。如下所示,即使为-a和-b指定特定的记录器也不起作用。在我将根更改为debug之前,它们不会在debug级别进行日志记录。真的被这个难住了,有什么想法吗?