Цветные сообщения AnsiOutput для консоли против файла - PullRequest
0 голосов
/ 21 января 2019

Я использую Spring boot с log4j2

Чтобы написать цветные / стилизованные сообщения для консольного приложения с помощью Spring's AnsiOutput при загрузке, нам нужно установить spring.output.ansi.enabled=ALWAYS в intellij (я предполагаю, что все IDE запускают java с использованием javaw, который не будет иметь собственную консоль напрямую, поэтому настройка по умолчанию spring.output.ansi.enabled=DETECT не будет работать по умолчанию в IDE)

Но если мы установим это, то при начальной загрузке пружина должна также написать те же специальные символы ANSI другим аппендерам (скажем, File appender) вместе с консолью, поскольку свойство не говорит, что нам нужно применять цветовое форматирование только к консоли

Но, когда я смотрю на файл журнала, я не вижу никаких специальных символов в сообщениях журнала

Может кто-нибудь объяснить, как log4j2 / spring boot может это сделать?

1 Ответ

0 голосов
/ 21 января 2019

Стандартная конфигурация Spring Boot для Log4j2 использует разные шаблоны для приложения консоли и приложения файла.Шаблон для приложения для консоли выглядит следующим образом:

%clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}

Шаблон для приложения для файла выглядит следующим образом:

%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}

Окраска вывода достигается с помощью %clr{…}{…}.Как видно из приведенного выше, он используется в шаблоне для приложения-консоли, но не в шаблоне для приложения-файла.Именно эта разница позволяет окрашивать только вывод консоли.

...