У вас есть три варианта, упомянутых в порядке предпочтения.
Вариант 1
Используйте правильную библиотеку журналов.
Вариант 2, как указано @ Glains
private static boolean isTraceEnabled()
{
return TRACE_LEVEL <= LOG_LEVEL;
}
private static void trace(String msg)
{
if (isTraceEnabled())
{
System.out.println(msg);
}
}
private static void foo()
{
for (int i = 0; i < 10; i++)
{
doSomething();
if (isTraceEnabled())
{
trace("FLOW-1: " + getHugeString() + " for i:" + i);
}
}
}
Вариант 3: использовать формат сообщения, как в jdk logger.
private static void trace(String format, Object... values)
{
if (TRACE_LEVEL > LOG_LEVEL)
{
return;
}
for (int i = 0; i < values.length; i++)
{
Object value = values[i];
if (value instanceof Supplier)
{
values[i] = ((Supplier) value).get();
}
}
System.out.println(new MessageFormat(format).format(values));
}
вызов как
trace("FLOW-1: {0} for i: {1}", (Supplier) (StackOverflow::getHugeString), i);