香港专业教育学院尝试将配置文件更改为如下所示,但仍然是输出为纯白色,如何将其更改为任何颜色?喜欢每个级别的不同颜色.
代码:
import org.apache.log4j.*;
public class StartUp {
private static final Logger LOGGER = Logger.getLogger(Class.class.getName());
public static void main(String[] args) throws Exception {
LOGGER.trace("Trace Message!");
LOGGER.debug("Debug Message!");
LOGGER.info("Info Message!");
LOGGER.warn("Warn Message!");
LOGGER.error("Error Message!");
LOGGER.fatal("Fatal Message!");
Run Code Online (Sandbox Code Playgroud)
配置文件(log4j2.xml):
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="%highlight{[%d] - %msg%n}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}"/>
</Console>
</Appenders>
<Loggers>
<Root level="ALL">
<AppenderRef ref="CONSOLE"/>
</Root>
</Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)
nam*_*999 29
似乎某些默认值在2.10.0中被破坏了.通过添加disableAnsi选项,我可以在最后一个版本中获得颜色.
<PatternLayout pattern="%highlight{...}" disableAnsi="false"/>
Run Code Online (Sandbox Code Playgroud)
在文档中,它被认为是默认的,false但似乎并非如此.
我接受了问题和答案,并创建了一个类似于默认 logback 的彩色输出。
配置文件(log4j2.xml):
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<Properties>
<Property name="CLR">{FATAL=bright red, ERROR=red, WARN=bright yellow, INFO=Normal, DEBUG=white, TRACE=black}</Property>
<Property name="LOG_PATTERN">
%highlight{%5p- %d{yy-MM-dd HH:mm:ss.SSS}}${CLR} %clr{${sys:PID}}{magenta}%clr{-}{faint}%clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %highlight{: %m%n%xwEx}${CLR}
</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="${LOG_PATTERN}" disableAnsi="false"/>
</Console>
</Appenders>
<Loggers>
<logger name="org.springframework.boot.autoconfigure.logging" level="info"/>
<Root level="debug">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)