You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何将多字段设置日志合并为单行输出?

问题:合并Java字段设置日志为单行输出

现有Java代码逻辑为:从请求payload中获取Information数据,为OrgMap对象设置各非空字段,每个字段设置成功后单独输出一条日志(当前为多行形式)。需求是将所有成功设置的字段合并为单行日志,格式示例:FirstName,LastName,Gender,DOB 已在orgTable中设置

原有代码及日志情况

原有设置代码

OrgMap org = new OrgMap();
Information info = request.Information().get(0); // 从payload获取数据

if (info.getFirstName() != null) {
    org.setFirstName(info.getFirstName());
    log.info("firstname has set in orgTable");
}
if (info.getPatientMiddleName() != null) {
    org.setMiddleName(info.getMiddleName());
    log.info("firstname has set in orgTable"); // 原代码存在日志内容错误
}
if (info.getPatientLastName() != null) {
    org.setLastName(info.getLastName());
    log.info("LastName has set in orgTable");
}
if (info.getDOB() != null) { // 原代码变量名tInfo修正为info
    org.setDob(info.getDOB());
    log.info("DOB has set in orgTable");
}
if (info.getGender() != null) { // 原代码变量名patientInfo修正为info
    org.setGender(info.getGender()); // 原代码变量名orgPatient修正为org
    log.info("Gender has set in orgTable");
}

当前日志输出(多行)

firstname has set in orgTable
LastName has set in orgTable
Gender has set in orgTable
DOB has set in orgTable

期望日志输出(单行)

FirstName,LastName,Gender,DOB 已在orgTable中设置

实现方案

核心思路是先收集所有成功设置的字段名,最后统一输出单行日志,具体实现如下:

修改后的代码

OrgMap org = new OrgMap();
Information info = request.Information().get(0);
List<String> setFields = new ArrayList<>();

if (info.getFirstName() != null) {
    org.setFirstName(info.getFirstName());
    setFields.add("FirstName");
}
if (info.getPatientMiddleName() != null) {
    org.setMiddleName(info.getMiddleName());
    setFields.add("MiddleName");
}
if (info.getPatientLastName() != null) {
    org.setLastName(info.getLastName());
    setFields.add("LastName");
}
if (info.getDOB() != null) {
    org.setDob(info.getDOB());
    setFields.add("DOB");
}
if (info.getGender() != null) {
    org.setGender(info.getGender());
    setFields.add("Gender");
}

// 统一输出单行日志
if (!setFields.isEmpty()) {
    String fieldStr = String.join(",", setFields);
    log.info("{} 已在orgTable中设置", fieldStr);
}

代码说明

  • 用ArrayList收集字段名,避免频繁字符串拼接带来的性能损耗;
  • 使用String.join()方法快速将集合元素拼接为逗号分隔的字符串;
  • 最后判断集合非空才输出日志,避免没有字段设置时输出空日志;
  • 修正了原代码中变量名不一致、日志内容错误的问题。

内容的提问来源于stack exchange,提问作者dracile

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 08:26:36