springboot 2. x中利用log4j2调试日志无法关闭如何解决

  介绍

本篇文章为大家展示了springboot 2. x中利用log4j2调试日志无法关闭如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

springboot2.x集成log4j2时,始终无法关闭log4j2自身的日志输出

<强>已经做了如下配置:

在log4j2.xml的配置文件中,配置配置的状态属性为;

确认系统所有地方无配置log4j2.debug;

如上配置都无法解决问题,只能从源码着手一探究竟。

从log4j2-api包中,找到StatusLogger,其设置日志输出水平的代码如下:

private  StatusLogger (final  String 名字,final  MessageFactory  messageFactory), {   ,,,,,,,超级(名字,,messageFactory);   ,,,,,,,final  String  dateFormat =, PROPS.getStringProperty (Strings.EMPTY STATUS_DATE_FORMAT也);   ,,,,,,,final  boolean  showDateTime =, ! Strings.isEmpty (dateFormat);   ,,,,,,,this.logger =new  SimpleLogger (“StatusLogger",, Level.ERROR,假的,真的,,showDateTime,假的,   ,,,,,,,,,,,,,,,,,dateFormat messageFactory,,道具、,System.err);   ,,,,,,,this.listenersLevel =, Level.toLevel (DEFAULT_STATUS_LEVEL, Level.WARN) .intLevel ();   ,   ,,,,,,,//,log4j2 - 1813, if  system  property “log4j2.debug", is 定义,print  all  status 日志   ,,,,,,,if  (isDebugPropertyEnabled ()), {   ,,,,,,,,,,,logger.setLevel (Level.TRACE);   ,,,,,,,}   ,,,}

从上述代码可以看的出,级别的级别默认是设置为错误,仅当有设置log4j2.debug时,才会输出跟踪日志。

那log4j2.debug属性在哪设置的呢?带着这个问题,寻找到了SystemPropertiesPropertySource。这个类在装载属性到环境前有做自定义处理:

private  static  final  String  PREFIX =發og4j2 !”;   ,   @Override   public  CharSequence  getNormalForm (final  Iterable< ? extends  CharSequence>,令牌),{   ,,,return  PREFIX  +, Util.joinAsCamelCase(令牌);   }

如上述代码所示,该操作会解释所有系统属性,然后按解析后的令牌自行加上log4j2。的前缀。在这里导致了日志系统认为需要调试,进而输出跟踪日志的问题。

那系统属性上的调试哪来的呢?

首先,本地进程是以运行模式启动的,环境变量也没有自行设置调试参数,为何会有jvm启动参数中会有“-Ddebug”的存在吗?

查看运行进程的配置配置如下所示:

 springboot 2。x中利用log4j2调试日志无法关闭如何解决

springboot有一个自定义配置,默认是勾上了启用调试输出。把这个去掉,再次运行发现-Ddebug没有了,日志也正常了。

不过即便如此,log4j2是不是有点智障,这么拼接系统变量的搞法很容易混淆

springboot整合log4j2遇到的一个坑

项目中使用springboot,需要用log4j2做日志框架

问题

项目启动报错:无法初始化log4j2日志从类路径:log4j2-dev。yml

 springboot 2。x中利用log4j2调试日志无法关闭如何解决

是一个无法初始化log4j2配置的问题,项目中采用的yml的配置文件。

前置操作

首先引入依赖:

& lt; dependency>   ,,,,,,,& lt; groupId> org.springframework.boot   ,,,,,,,& lt; artifactId> spring-boot-starter-log4j2   ,,,& lt;/dependency>

去掉默认的logback配置:

& lt; dependency>   ,,,,,,,& lt; groupId> org.springframework.boot   ,,,,,,,& lt; artifactId> spring-boot-starter   ,,,,,,,& lt; exclusions> & lt; !——,去掉默认配置,——比;   ,,,,,,,,,,,& lt; exclusion>   ,,,,,,,,,,,,,,,& lt; groupId> org.springframework.boot   ,,,,,,,,,,,,,,,& lt; artifactId> spring-boot-starter-logging   ,,,,,,,,,,,& lt;/exclusion>   ,,,,,,,& lt;/exclusions>   ,,,& lt;/dependency>

添加配置文件:

 springboot 2. x中利用log4j2调试日志无法关闭如何解决

配置日志记录。配置

 springboot 2. x中利用log4j2调试日志无法关闭如何解决

以上是整合操作的必要配置,配置完成启动报错。

问题排查

springboot 2. x中利用log4j2调试日志无法关闭如何解决