如何在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
相关产品推荐
相关产品推荐

