<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">Log4j2支持用户自定义的日志等级,在代码或者配置文件中都可以进行新日志等级的定义。</span>
1. 如果要在代码中定义新等级,可以使用 Level.forName() 方法:
// This creates the "VERBOSE" level if it does not exist yet.
final Level VERBOSE = Level.forName("VERBOSE", 550);
final Logger logger = LogManager.getLogger();
logger.log(VERBOSE, "a verbose message"); // use the custom VERBOSE level
// Create and use a new custom level "DIAG".
logger.log(Level.forName("DIAG", 350), "a diagnostic message");
// Use (don't create) the "DIAG" custom level.
// Only do this *after* the custom level is created!
logger.log(Level.getLevel("DIAG"), "another diagnostic message");
2. 如果要在配置文件中定义新等级,可以使用<CustomLevels>标签进行定义:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<span style="white-space:pre"> </span><!-- Define custom levels before using them for filtering below. -->
<CustomLevels>
<CustomLevel name="DIAG" intLevel="350" />
<CustomLevel name="NOTICE" intLevel="450" />
<CustomLevel name="VERBOSE" intLevel="550" />
</CustomLevels>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-7level %logger{36} - %msg%n"/>
</Console>
<File name="MyFile" fileName="logs/app.log">
<PatternLayout pattern="%d %-7level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="trace">
<!-- Only events at DIAG level or more specific are sent to the console. -->
<AppenderRef ref="Console" level="diag" />
<AppenderRef ref="MyFile" level="trace" />
</Root>
</Loggers>
</Configuration>
在Log4j2程序在解析配置文件后,会自动调用
Level.forName()创建新日志等级。
3. 在日志等级中使用的数字(intLevel),是用来让系统知道新等级相对于系统自带的日志等级所在的位置。
系统默认的日志等级如下:
如果大家想深入研究,可以参考用户手册第17章的内容。
下一篇将介绍配置文件不再默认路径时,如何加载配置文件。谢谢关注。