java - 在 Java 中记录对象的值时隐藏特定属性

标签 java jakarta-ee logging log4j slf4j

我通过打印对象的所有属性值来记录对象值

log("logging obj"+my_obj)

我在对象中有一个“密码”属性,我想在日志记录中隐藏它。我能想到的一种策略是

temporarily save the password value in another String and set the value of the password to null
perform logging
Set the password value again using the value stored in the temp variable

是否有更好的方法从日志记录中排除特定属性?

编辑:我也无法通过设计修改 my_obj 本身。

最佳答案

您可以简单地重写对象的 toString 方法并排除密码属性。

例如:

   @Override 
   public String toString()
   {
   StringBuilder result = new StringBuilder();

   ... add your attributes that should be printed ...

   return result.toString();
   }

编辑:在您发表评论后,我的意思是这样的:

  private String myObjectToString(MyObject myObject)
  {
   StringBuilder result = new StringBuilder();
   ...
   return result.toString();
  }

关于java - 在 Java 中记录对象的值时隐藏特定属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20458293/

相关文章:

javac 无法识别 Jenkins Windows 批处理命令

jpa - eclipselink 不会从带注释的 JPA 类生成表

java - 带接口(interface)的 Hibernate 一对一映射。我需要建议

java - 非法参数异常 : Unsupported ciphersuite

java - 使用 Logback 仅记录前 N 行

java - 如何使用gson将Date序列化为long?

java - 网络浏览器中的 IllegalThreadStateException(Windows)

Java 重载与覆盖

c# - 进入/退出方法时如何增加/减少缩进?

java - 如何在日志文件log4j中只写入INFO日志?