Что такое "бревно"?Теперь все реализации позволяют передавать поставщика, как это было упомянуто в других ответах.Для этого в SLF4J есть Fixed RFE , но, пожалуйста, укажите, о какой именно библиотеке вы говорите, какая версия и т. Д.
Для более старых версий все ещеможно использовать старую конструкцию, например:
if(log.isTraceEnabled()) {
log.trace("userIdsSet={}", resultUserIdsSet.toString());
}
Теперь, несмотря на поддержку Supplier
, которая действительно может решить проблему, я бы хотел обратить ваше внимание на примечание:
Примечание: resultUserIdsSet содержит миллионы целых чисел.
Это довольно проблематично: если вы поместите такой лог-оператор, вы действительно захотите, чтобы он печатался на уровне трассировки.Когда трассировка отключена (читайте почти всегда) - тогда вы можете избежать дорогостоящего вычисления toString, как было упомянуто в ответах.Однако затем мы включаем трассировку, и она создаст миллион целых чисел в множестве, может произойти много «интересных» вещей:
- Миллионы целых чисел очень дороги, чтобы напечатать их как на консоли, так и на консоли.файл, его слишком много данных и операции ввода-вывода стоят дорого.
- Даже если вы напечатаете миллионы целых чисел, будет очень сложно понять что-то из этого журнала.
- Все будетусугубьте ситуацию, если вы напечатаете это в каком-то внешнем цикле for
Итог, подумайте дважды, действительно ли вы хотите напечатать все эти идентификаторы.Возможно, имеет смысл усечь вывод + предоставить некоторые общие характеристики, такие как количество идентификаторов в наборе и т. Д.