Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot AnsiOutput颜色消息到控制台vs文件_Spring Boot_Log4j2 - Fatal编程技术网

Spring boot AnsiOutput颜色消息到控制台vs文件

Spring boot AnsiOutput颜色消息到控制台vs文件,spring-boot,log4j2,Spring Boot,Log4j2,我正在使用带有log4j2的Spring boot 要使用Spring boot的AnsiOutput将彩色/样式化消息写入控制台appender,我们需要在intellij中设置Spring.output.ansi.enabled=ALWAYS(我的假设是,所有IDE都使用javaw启动java,而javaw不会直接拥有自己的控制台,因此默认设置spring.output.ansi.enabled=DETECT在IDE中默认不起作用) 但是如果我们设置了这个参数,spring boot也应该将

我正在使用带有log4j2的Spring boot

要使用Spring boot的AnsiOutput将彩色/样式化消息写入控制台appender,我们需要在intellij中设置
Spring.output.ansi.enabled=ALWAYS
(我的假设是,所有IDE都使用javaw启动java,而javaw不会直接拥有自己的控制台,因此默认设置
spring.output.ansi.enabled=DETECT
在IDE中默认不起作用)

但是如果我们设置了这个参数,spring boot也应该将相同的ANSI特殊字符与console一起写入其他appender(比如
File
appender),因为属性并没有说我们只需要将颜色格式应用于console

但是,当我查看日志文件时,在日志消息中没有看到任何特殊字符


有人能解释一下log4j2/spring boot是如何做到这一点的吗?

spring boot的log4j2默认配置对控制台appender和文件appender使用不同的模式。控制台appender的模式如下:

%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{%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{…}{…}实现的
。正如您在上面所看到的,它用于控制台追加器的模式,但不用于文件追加器的模式。正是这种差异,才允许对控制台输出进行着色。

Spring Boot的Log4j2默认配置对控制台追加器和文件追加器使用不同的模式e控制台附加程序如下所示:

%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{%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{…}{…}实现的
。正如您在上面看到的,它用于控制台appender的模式,但不用于文件appender的模式。正是这种差异使得控制台输出只能着色。

Oops。看起来我太笨了/在发布问题之前没有足够注意细节。无论如何,谢谢Oops。看起来我是在我发布问题之前,我太笨了/我没有足够注意细节。无论如何,谢谢