本篇文章为大家展示了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有一个自定义配置,默认是勾上了启用调试输出。把这个去掉,再次运行发现-Ddebug没有了,日志也正常了。
不过即便如此,log4j2是不是有点智障,这么拼接系统变量的搞法很容易混淆
springboot整合log4j2遇到的一个坑
项目中使用springboot,需要用log4j2做日志框架
问题
项目启动报错:无法初始化log4j2日志从类路径:log4j2-dev。yml
是一个无法初始化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>
添加配置文件:
配置日志记录。配置
以上是整合操作的必要配置,配置完成启动报错。