Source:
<code>public void listAllServices() { if (serviceMap != null) { logger.info("##################################################################"); logger.info("List of avalible services"); logger.info("readable;writeable;recordable;type;service;value;allowed;min;max"); for (KM200CommObject object : serviceMap.values()) { if (object != null) { String val = "", type, valPara = ""; <START> logger.debug("List:" + object.getServiceType() + " " + object.getFullServiceName()); <END> type = object.getServiceType(); if (type == null) { type = new String(); } if (!type.equals("refEnum") && !type.equals("") && !type.equals("switchProgram") && !type.equals("yRecording")) { val = object.getValue().toString(); if (object.getValueParameter() != null) { if (type.equals("stringValue")) { List<String> valParas = (List<String>) object.getValueParameter(); for (int i = 0; i < valParas.size(); i++) { if (i > 0) { valPara += "|"; } valPara += valParas.get(i); } valPara += ";;"; } if (type.equals("floatValue")) { List<Float> valParas = (List<Float>) object.getValueParameter(); valPara += ";"; if (valParas.size() == 2) { valPara += valParas.get(0); valPara += ";"; valPara += valParas.get(1); } else { logger.error("Value parameter for float != 2"); valPara += ";"; } } } } else { val = ""; valPara = ";"; } logger.info(object.getReadable().toString() + ";" + object.getWriteable().toString() + ";" + object.getRecordable().toString() + ";" + type + ";" + object.getFullServiceName() + ";" + val + ";" + valPara); } } logger.info("##################################################################"); } }</code><technical_language>parameterized logging instead of string concatenation</technical_language>

Target:
public void listAllServices() { if (serviceMap != null) { logger.info("##################################################################"); logger.info("List of avalible services"); logger.info("readable;writeable;recordable;type;service;value;allowed;min;max"); for (KM200CommObject object : serviceMap.values()) { if (object != null) { String val = "", type, valPara = ""; logger.debug("List type: service: {}", object.getServiceType(), object.getFullServiceName()); type = object.getServiceType(); if (type == null) { type = new String(); } if (!type.equals("refEnum") && !type.equals("") && !type.equals("switchProgram") && !type.equals("yRecording")) { val = object.getValue().toString(); if (object.getValueParameter() != null) { if (type.equals("stringValue")) { List<String> valParas = (List<String>) object.getValueParameter(); for (int i = 0; i < valParas.size(); i++) { if (i > 0) { valPara += "|"; } valPara += valParas.get(i); } valPara += ";;"; } if (type.equals("floatValue")) { List<Float> valParas = (List<Float>) object.getValueParameter(); valPara += ";"; if (valParas.size() == 2) { valPara += valParas.get(0); valPara += ";"; valPara += valParas.get(1); } else { logger.debug("Value parameter for float != 2, this shouldn't happen"); valPara += ";"; } } } else { valPara += ";;"; } } else { val = ""; valPara = ";"; } logger.info("{};{};{};{};{};{};{}", object.getReadable().toString(), object.getWriteable().toString(), object.getRecordable().toString(), type, object.getFullServiceName(), val, valPara); } } logger.info("##################################################################"); } }