扫码一下
查看教程更方便
org.apache.logging.log4j.Level 级别。 我们还可以通过对 Level 类进行子类化来定义自定义级别。
级别 | 描述 |
---|---|
ALL | 所有级别,包括自定义级别。 |
DEBUG | 指定对调试应用程序最有用的细粒度信息事件。 |
INFO | 指定在粗粒度级别突出显示应用程序进度的信息性消息。 |
WARN | 指定潜在的有害情况。 |
ERROR | 指定可能仍允许应用程序继续运行的错误事件。 |
FATAL | 指定可能导致应用程序中止的非常严重的错误事件。 |
OFF | 可能的最高等级,旨在关闭日志记录。 |
TRACE | 指定比 DEBUG 更细粒度的信息事件。 |
如果 p >= q
,则启用级别为 q 的记录器中级别 p 的日志请求。 这条规则是 log4j 的核心。 它假定级别是有序的。 对于标准级别,我们有 ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF。
以下示例显示了我们如何过滤所有 DEBUG 和 INFO 消息。 该程序使用记录器方法 setLevel(Level.X)
来设置所需的日志记录级别:
此示例将打印除 Debug 和 Info 之外的所有消息:
import org.apache.logging.log4j.*;
public class LogClass {
private static org.apache.log4j.Logger log = LogManager.getLogger(LogClass.class);
public static void main(String[] args) {
log.setLevel(Level.WARN);
log.trace("Trace Message!");
log.debug("Debug Message!");
log.info("Info Message!");
log.warn("Warn Message!");
log.error("Error Message!");
log.fatal("Fatal Message!");
}
}
当我们编译并运行 LogClass 程序时,它将生成以下结果
Warn Message!
Error Message!
Fatal Message!
log4j 为我们提供基于配置文件的级别设置,当我们想要更改调试级别时,它可以让我们不必更改源代码。
以下是一个示例配置文件,它将执行与我们在上述示例中使用 log.setLevel(Level.WARN)
方法相同的任务。
#property.filename = /workspace/java/log4j
##
#appender.infoFile.type = FILE
#appender.infoFile.name = infoLogFile
##
#appender.infoFile.fileName=${filename}/log.out
#appender.infoFile.layout.type = PatternLayout
#appender.infoFile.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c{1} [%t] - %m%n
#rootLogger.level = warn
#rootLogger.appenderRef.infoFile.ref = infoLogFile
#rootLogger.appenderRef.infoFile.level = warn
现在让我们使用下面的程序
import org.apache.log4j.*;
public class LogClass {
private static org.apache.log4j.Logger log = LogManager.getLogger(LogClass.class);
public static void main(String[] args) {
log.trace("Trace Message!");
log.debug("Debug Message!");
log.info("Info Message!");
log.warn("Warn Message!");
log.error("Error Message!");
log.fatal("Fatal Message!");
}
}
现在编译并运行上述程序,我们将在 /workspace/java/log4j/log.out 文件中得到以下结果