Log4j日志级别使用小结

464 阅读2分钟

1. Log4j的日志级别有哪些?

image.png

从源码中看,一共分为8个等级,按优先组排序依次是:

  • OFF:最高等级的,用于关闭所有日志记录。
  • FATAL:指出每个严重的错误事件将会导致应用程序的退出。
  • ERROR:指出虽然发生错误事件,但仍然不影响系统的继续运行.就是显示错误信息。
  • WARN:表明会出现潜在错误的情形,就是显示警告信息。
  • INFO:表明消息在粗粒度级别上突出强调应用程序的运行过程,就是输出提示信息。
  • DEBUG:指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。
  • TRACE:很低的日志级别,一般不会使用。
  • ALL:最低等级的,用于打开所有日志记录。

值得注意的是,高优先级的日志级别会兼容低优先级的。也就是说,如果你设置的日志级别是 INFO,那么 INFO 及其以上的级别日志(比如WARN、ERROR等)都会被输出,而 DEBUG 及以下(比如TRACE)的日志则不会被输出。

private static final Logger LOGGER = LogManager.getLogger(LogLevelTestApplication.class);

public static void main(String[] args) {
	LOGGER.trace("=== trace 级别的日志可以打印! === "  );
	LOGGER.debug("=== debug 级别的日志可以打印! === "  );
	LOGGER.info("=== info 级别的日志可以打印! === "  );
	LOGGER.warn("=== warn 级别的日志可以打印! === "  );
	LOGGER.error("=== error 级别的日志可以打印! === "  );
	LOGGER.fatal("=== fatal 级别的日志可以打印! === "  );
}

虽然 Log4j 提供了8种日志级别,但它建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。

2. 如何修改日志级别?

在程序中使用LOGGER.getLevel()可以获取当前使用的日志级别。默认情况下,springboot(以springboot 2.6.2为例)项目的默认日志级别为INFO,所以开发期间,因为调试代码而想要打印 DEBUG 级别的日志时,就需要修改程序的日志级别了,修改的方式十分简单,在application.yml中加上:

logging:
  level:
    root: WARN
    com.cui.logleveltest.LogLevelTestApplication: ERROR

可以看出这种设计能够针对各个目录设置不同的日志级别,与前面LogManager.getLogger(LogLevelTestApplication.class)结合实现精准日志级别输出。