Подтвердить что ты не робот

Отображение журнала в строке для многострочного текста

Скажем, у меня многострочный текст "a\nb\nc"; когда я регистрирую его, например, с помощью метода "отладки", я получаю только один журнал;

это ожидаемое поведение, но затем строки, исключающие первые, также отображаются слева на выходе:

1234 [1] [DEBUG] Test - a
b
c
1235 [1] [DEBUG] Test - ...

Простым обходным путем является создание одного журнала на строку для получения:

1234 [1] [DEBUG] Test - a
1235 [1] [DEBUG] Test - b
1236 [1] [DEBUG] Test - c
1237 [1] [DEBUG] Test - ...

_

Есть ли способ автоматического управления этим видом или я должен написать простую оболочку для управления этим параметром?

_

Спасибо заранее.

4b9b3361

Ответ 1

Невозможно и не рекомендуется.

В первом примере ясно, что существуют два оператора журнала, тогда как во втором примере можно с первого взгляда предположить, что их четыре.

Один оператор журнала должен предоставить единую исходную информацию о том, что произошло и когда это произошло, и эта информация должна быть каким-то образом полезной.

Представьте, если у вас есть один оператор ошибки, такой как исключение, которое будет охватывать 30 или около того строк из-за его трассировки стека. Это будет выглядеть 30 ошибок в вашем случае, и автоматизированный инструмент может также сообщить об этом как о 30 ошибках. Это дезинформация и ее следует избегать.

Не говоря уже о том, что "один оператор журнала!= один письменный журнал" может привести к хаосу синхронизации, когда вы имеете дело с более сложными ситуациями в журнале, при одновременном одновременном использовании нескольких потоков в одном файле или, что еще хуже, нескольких JVM поэтому.

Если значение "слишком далеко слева" дает вам много горя, я бы предложил сделать некоторую пост-обработку в сгенерированном файле журнала, например, добавить 8 пробелов или около того в начале каждой строки, которая не содержит [DEBUG], [INFO],...