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

如何在JBoss中同时使用Log4j2与默认日志(而非覆盖)

在JBoss中同时保留默认日志子系统并引入Log4j2自定义日志

1. 移除日志子系统排除配置

首先修改你的jboss-deployment-structure.xml,删除对logging子系统的排除配置,恢复JBoss默认日志功能:

<deployment>
    <!-- 移除原exclude-subsystems中的logging配置,保留默认日志子系统 -->
</deployment>

2. 添加Log4j2依赖

如果是Maven项目,在pom.xml中添加Log4j2核心依赖(版本可根据实际需求调整):

<dependencies>
    <!-- Log4j2 API与核心实现 -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.20.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.20.0</version>
    </dependency>
    <!-- 若应用使用SLF4J作为日志门面,添加桥接依赖 -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.20.0</version>
    </dependency>
</dependencies>

3. 添加Log4j2自定义配置文件

在项目src/main/resources目录下创建Log4j2配置文件(支持log4j2.xml、log4j2.properties等格式),示例log4j2.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <!-- 控制台输出配置 -->
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <!-- 自定义文件输出,路径指向JBoss日志目录 -->
        <File name="AppCustomLog" fileName="${jboss.server.log.dir}/app-custom.log">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>
    <Loggers>
        <!-- 自定义业务包的日志级别与输出目标 -->
        <Logger name="com.your.business.package" level="DEBUG" additivity="false">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="AppCustomLog"/>
        </Logger>
        <!-- 根日志默认配置 -->
        <Root level="INFO">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

4. 配置JBoss部署描述符避免依赖冲突

在jboss-deployment-structure.xml中添加依赖排除规则,防止JBoss自带日志组件与Log4j2冲突:

<deployment>
    <exclusions>
        <!-- 排除JBoss自带的SLF4J与JUL模块,避免日志桥接冲突 -->
        <module name="org.slf4j"/>
        <module name="java.util.logging"/>
    </exclusions>
    <dependencies>
        <!-- 可选:引入JBoss中Log4j相关模块(若依赖容器提供的组件) -->
        <module name="org.apache.log4j" optional="true"/>
    </dependencies>
</deployment>

关键说明

  • JBoss默认日志子系统会继续处理容器级日志(如服务器启动、容器运行日志),Log4j2仅负责应用代码中自定义的日志记录。
  • 确保Log4j2依赖版本与JBoss版本兼容,避免类加载异常。
  • 部署应用后,可通过${jboss.server.log.dir}目录下的app-custom.log验证Log4j2是否生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:52:44