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

有没有办法在使用Lombok记录器记录时屏蔽类值?

寇宏义
2023-03-14

我想知道是否有一种通用方法可以在记录时屏蔽特定的类字段值?我正在使用龙目山记录器。

例如:

@ToString(includeFieldNames = true)
public class Account{
    String name = "";
    String accountNumber = "";
    String code = "";
}

在记录toString()时,我希望能够以通用方式屏蔽该值(我知道我可以重写toString方法,但这需要针对每个类专门完成)

共有3个答案

胡元忠
2023-03-14

对于您的用例,您可以从toString方法中排除字段。

@ToString(exclude="accountNumber")
public class Account {
    String name = "";
    String accountNumber= "";
    String code = "";
}
范弘亮
2023-03-14

您可以创建一个专用类来保存需要混淆的对象。

@ToString(callSuper = true)
public class Account {
    String name = "";
    MaskedString accountNumber = "";
    String code = "";
}

@Getter
@RequiredArgsConstructor
class MaskedString {
    private String value; 

    @Override
    public String toString() {
        new StringBuilder(value)
            .replace(0, 5, "XXXXX")
            .toString();
    }
}

这将用aintNumber="XXXXX56789"替换帐户编号="0123456789"的值。

盛城
2023-03-14

Lombok现在支持使用注释从toString方法中排除字段

@ToString
public class Account {
    String name = "";
    @ToString.Exclude
    String accountNumber= "";
    String code = "";
}
 类似资料:
  • 问题内容: 在我的项目中,我们使用了许多批注,这些批注在javadoc API文档中非常有用。 有谁知道在生成的javadocs中包含注释的简单方法?我不想编写自己的javadoc插件。有什么解决办法吗? 问题答案: 参见java.lang.annotation.Documented 表示默认情况下,javadoc和类似工具将记录带有类型的注释。此类型应用于注释其注释会影响其客户端对已注释元素的使

  • 我使用KCL编写了一个Amazon Kinesis消费者,KCL管理我的记录处理任务。它当前正在处理记录而不进行筛选。我正在寻找一种方法来处理样本记录,同时跳过其中的一些记录。 例如,如果总共有100条记录,我只想处理其中的1/10(10个样本记录)。 谢谢

  • 我正在寻找一种方法来记录这个框架中包含的所有查询信息http://ttddyy.github.io/datasource-proxy/docs/current/user-guide/index.html#query-然而,我想排除查询参数的日志记录。有没有办法使用数据源代理来实现这一点?如果没有,我还有什么选择?我目前正在使用spring boot 2.1.1。 谢谢,布莱恩

  • 今天我看了一下Java7Update45中引入的任务控制,并用飞行记录器进行了一些测试。一切似乎都在按预期工作,我从我测试的应用程序中获得了大量关于线程、内存和任何东西的数据。只有一件事对我来说似乎很奇怪:在“General”类别中没有显示CPU使用情况,在CPU使用情况图标下面只有一个句子“no Events In Recording”。当我不使用飞行记录而是使用JMX控制台时,CPU使用情况显

  • 问题不是测试中的记录器--嗯--是的,它们也是--真正的问题是运行的代码部分中的记录器(我所有的程序记录器)被设置为错误的日志级别。当程序测试被配置时,他们不会获得日志记录。 但是,当使用logback.goovy文件初始化logback时,项目报告的结果是正确的。但是,实际日志记录级别设置为跟踪或全部 从下面的输出来看,很明显logback已经配置为info。但是TRACE(最后一行)处的第一个

  • 我正在将一个应用程序从Log4J 1.2.16迁移到Log4J 2.13.3。为此,我使用log4j21.2到2.13.3桥。在我自己的开发机器上,一切都运转良好。但是,当我将应用程序部署到测试服务器时,日志只会发送到根日志记录器,我定义的其他日志文件保持为空。 配置文件完全相同,只是附件中的路径不同。我的开发机器运行Windows,测试服务器运行Linux。该应用程序已部署到Weblogic 1