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

Wildfly部署Spring Boot项目server.log仅打印错误日志问题

问题根因

核心原因是Spring Boot 2.7默认内嵌了Logback日志实现,打包部署到Wildfly时没有做容器日志适配,自带的日志实现和Wildfly原生的JBoss Logging子系统产生了冲突,导致应用日志上下文和容器日志上下文隔离,才会出现你遇到的输出异常:

  • Wildfly默认仅会把应用侧System.err流的内容、以及ERROR级别的日志透传到server.log文件
  • System.out输出、SLF4J打印的INFO/DEBUG等低级别日志,被Spring Boot自带的Logback拦截后没有交给Wildfly日志系统处理,自然无法写入容器的日志文件
  • 同环境下非Spring架构的War包日志正常,是因为这类应用没有自带独立日志实现,直接调用了容器提供的日志绑定,完全匹配Wildfly的默认日志规则。
修复步骤

按以下顺序调整配置即可解决问题:

  1. 排除Spring Boot默认自带的日志Starter,消除依赖冲突
    调整pom.xml中spring-boot-starter-web的依赖配置,排除默认的日志实现包:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  2. 添加Wildfly日志桥接依赖,将应用侧的SLF4J日志调用统一转发给容器日志系统处理,注意依赖范围设为provided,避免重复打包进War包:
    <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>3.4.3.Final</version>
        <scope>provided</scope>
    </dependency>
    
  3. 关闭Spring Boot对系统输出流的私自拦截,在application.properties中添加如下配置:
    logging.register-shutdown-hook=false
    
    如果你项目里自定义过logback-spring.xml、log4j2.xml这类独立日志配置文件,部署到Wildfly时可以直接移除——日志级别、输出格式、落盘规则全部由Wildfly的日志配置统一管控即可,不需要应用侧单独配置。

调整完成后重新打包部署,再调用接口测试,System.out输出、SLF4J的INFO级别日志就会正常写入server.log,和其他非Spring应用的日志表现完全一致。

注:如果调整后仍看不到INFO日志,可检查Wildfly配置中根日志记录器的级别是否被误设为ERROR,同环境其他应用正常的情况下一般不需要修改容器侧配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:27:32