You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成Spark后日志输出XML、生成.lck文件问题排查

问题根因

出现application.logs.0、application.logs.0.lck文件+XML格式日志,是Log4j 1.x 日志实现抢占了SLF4J绑定位置,替代Spring Boot默认的Logback日志系统生效导致的。Spark生态的组件默认会传递引入Log4j 1.x的依赖包,未做适配的情况下会和Spring Boot默认日志体系产生冲突。

问题定位步骤
  • 执行Maven依赖过滤命令,直接定位冲突源,无需逐行翻全量依赖树:
    mvn dependency:tree -Dincludes=org.slf4j:*,log4j:*,org.apache.logging.log4j:*,ch.qos.logback:*
    
  • 查看命令输出结果,找到log4j:log4j、org.slf4j:slf4j-log4j12两个依赖的引入路径,这两个包就是触发冲突的直接来源,对应的上游依赖就是你引入的Spark相关组件。
解决方案
  1. 排除Spark依赖中传递的Log4j 1.x实现
    在所有Spark相关依赖(包括spark-core、spark-sql、spark-streaming等所有你显式引入的Spark组件)的配置中添加排除规则,以spark-core为例:
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.12</artifactId>
    <version>对应你使用的Spark版本</version>
    <exclusions>
        <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  1. 验证排除结果
    重新执行之前的依赖过滤命令,确认类路径下已经不存在log4j:log4j、org.slf4j:slf4j-log4j12两个包,剩余日志相关依赖应为Spring Boot默认的日志体系组件:
  • ch.qos.logback:logback-classic
  • ch.qos.logback:logback-core
  • org.slf4j:slf4j-api
  • org.apache.logging.log4j:log4j-to-slf4j(该包为Spring Boot自带的Log4j2日志桥接组件,属于正常依赖无需处理)
  1. 补全日志桥接包(可选)
    如果排除依赖后启动提示找不到Log4j相关类,添加Log4j到SLF4J的桥接包即可,不要引入真实的Log4j实现包:
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>log4j-over-slf4j</artifactId>
    <scope>runtime</scope>
</dependency>
  1. 重启应用验证
    清理之前生成的异常日志文件后重启应用,会正常生成名为application.logs的普通文本日志文件,不会再生成带.0、.lck后缀的异常文件。

内容的提问来源于stack exchange,提问作者Marcin_S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.14 16:15:48