非Spring应用引入spring-security后无法输出org.springframework包日志问题
非Spring应用Spring框架日志无法输出解决办法
核心原因
非Spring Boot场景下,application.properties中的logging.*、debug=true均为Spring Boot专属配置,不会被Spring框架直接读取。Spring默认使用Apache Commons Logging(JCL)作为日志门面,未引入JCL到Log4j的桥接实现时,Spring的日志无法输出到你已配置的Log4j上下文。
解决步骤
第一步:引入JCL桥接依赖
Maven项目在pom.xml中添加以下依赖,版本和你现有Spring依赖版本保持一致即可:<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jcl</artifactId> <version>${spring.version}</version> </dependency>Gradle项目添加如下配置:
implementation "org.springframework:spring-jcl:${springVersion}"spring-jcl是Spring官方改造的JCL实现,会自动适配当前项目已存在的日志框架,无需额外配置第二步:修改Log4j配置
在你已有的log4j.properties中添加Spring包的日志级别规则:# 配置org.springframework包全局日志级别为TRACE log4j.logger.org.springframework=TRACE # 日志继承根Logger的输出配置,无需单独指定appender可保持为true log4j.additivity.org.springframework=true需确保你配置的根Logger或对应输出appender的阈值不高于TRACE,否则日志会被appender直接拦截
第三步:清理无效配置
删除之前application.properties中添加的所有日志相关配置,非Spring Boot场景下这类配置不会生效。
问题排查补充
若配置后仍无Spring日志输出,可检查依赖冲突,排除项目中其他JCL实现包(如
org.apache.logging.log4j:log4j-jcl),仅保留spring-jcl作为唯一的JCL实现即可。
内容的提问来源于stack exchange,提问作者tjholmes66
相关产品推荐
相关产品推荐

