gpt4 book ai didi

用于日志记录的 Java 对象序列化

转载 作者:行者123 更新时间:2023-11-29 04:44:58 25 4
gpt4 key购买 nike

我一直在使用ReflectionToStringBuilder用于序列化对象以进行日志记录。但是我们遇到了不打印完整对象的问题。喜欢下面的案例

GetTimeBlocksOutput tbout = new GetTimeBlocksOutput();
TimeBlock tb = new TimeBlock();
tb.setAvailable(true);
List<TimeBlock> tbList = new ArrayList<TimeBlock>();
tbList.add(tb);
tbout.setTimeBlocks(tbList);
System.out.println(ReflectionToStringBuilder.toString(tbout));

打印

mycomp.GetTimeBlocksOutput@55d56113[timeBlocks [mycomp.TimeBlock@2]]

有没有一种简单的方法可以将序列化对象用于记录目的?主要是开箱即用的东西,不需要手动更改要打印的对象

Json serializers是一种选择,但是

  • 它们应该用于这种情况吗?
  • 考虑到 Json 序列化会抛出异常。他们是一个简单的库,提供简单的 util 方法来完成任务吗?

最佳答案

您看到的是默认的 toString() 实现。

来自 Object.java

public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

只需覆盖此方法并返回适合您需要的 String 表示!

GetTimeBlocksOutput 可以是

public String toString() {
return this.timeBlocks.toString(); // assuming timeBlocks can't be null
}

时间 block 可以是

public String toString() {
return "Available:" + this.available;
}

您没有分享太多关于 TimeBlock 和 GetTimeBlocksOutput 中包含的信息,但我相信您可以想出一个好的实现。

关于用于日志记录的 Java 对象序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37555791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com