2012-08-07 5 views
5

В java вы можете использовать System.out.println() для печати пустой строки, но как она работает с log4j в файле журнала? Там я также хочу иметь одну или несколько пустых строк внутри файла журнала.Log4J печатает пустую строку в файл журнала

Я уже прочитал follwing: log4j how to append blank line

Но это не очень полезно, потому что с

logger.debug("\n"); 
logger.debug(""); 

вы не печатаете сообщение, но другую информацию, как время и так далее (макет logger) сохраняются в файле журнала. Но я просто хочу иметь полную пустую строку. Может ли кто-нибудь мне помочь?

ответ

8

Log4j не предназначен для написания пустых строк.

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

Я думаю, вам нужно создать свой собственный FileAppender, который проверяет сообщение регистрации перед записью. Если ваш message.equals("\n"); вы добавляете пустую строку без макета, обратившись к файлу самостоятельно и пропустите обычное ведение журнала с помощью макета. то вы можете использовать Logger.debug("\n");

Также плохой практикой является добавление пустых строк. Это похоже на разделение вашего Log-Message на несколько строк. Вы хотите, чтобы все ваши Logmessage были в одной строке, поэтому они легко анализируются для LogViewer-Tools, например, chainsaw или OtrosLogViewer Исключением являются Stacktraces.

2

Создайте свой собственный appender с пустым макетом и регистратором, который использует этот appender. Затем напишите пустую строку, используя этот регистратор. Убедитесь, что атрибут аддитивности для журнала установлен на false, чтобы корневой журнал не записывал сообщение, используя форматирование его добавлений.

Смежные вопросы