1. Log4j的日志级别有哪些?
从源码中看,一共分为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)
结合实现精准日志级别输出。