在JBoss应用服务器中部署使用Log4j2作为日志框架的应用时,默认的DEBUG级别日志会输出大量调试信息,既占用磁盘存储空间,又可能影响系统运行性能,因此很多场景下需要禁用DEBUG日志输出。

日志级别基础规则
Log4j2的日志级别从低到高依次为TRACE、DEBUG、INFO、WARN、ERROR、FATAL,级别越低输出的日志越详细。当设置日志级别为INFO时,低于INFO级别的DEBUG和TRACE日志就不会被输出,这就是禁用DEBUG日志的核心原理。
JBoss全局日志配置调整
如果希望调整整个JBoss服务器的日志级别,需要修改JBoss的配置文件。以JBoss EAP 7为例,配置文件路径为standalone/configuration/standalone.xml,找到logging子系统部分,修改对应的日志处理器级别。
<subsystem xmlns="urn:jboss:domain:logging:3.0">
<console-handler name="CONSOLE">
<level name="INFO"/> <!-- 控制台输出级别设为INFO,禁用DEBUG -->
<formatter>
<named-formatter name="COLOR-PATTERN"/>
</formatter>
</console-handler>
<periodic-rotating-file-handler name="FILE" autoflush="true">
<level name="INFO"/> <!-- 文件输出级别设为INFO,禁用DEBUG -->
<formatter>
<named-formatter name="PATTERN"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<root-logger>
<level name="INFO"/> <!-- 根日志级别设为INFO -->
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
</subsystem>修改完成后重启JBoss服务,全局的DEBUG日志就会停止输出。
应用内Log4j2配置调整
如果只需要调整单个应用的日志级别,不需要修改JBoss全局配置,可以在应用的src/main/resources目录下创建或修改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>
</Appenders>
<Loggers>
<!-- 设置特定包的日志级别为INFO,禁用该包下的DEBUG日志 -->
<Logger name="com.example.demo" level="INFO" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<!-- 根日志级别设为INFO -->
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>如果需要临时调整日志级别,也可以通过JBoss的管理控制台操作,进入日志配置页面,找到对应的日志类别,直接修改级别为INFO即可生效,无需重启服务。
常见问题排查
如果修改配置后DEBUG日志仍然输出,可以先检查配置文件是否被正确加载,确认log4j2.xml是否在应用的类路径下,或者JBoss的配置文件修改后是否重启了服务。另外需要检查是否存在多个日志配置文件冲突的情况,Log4j2会按照特定顺序加载配置文件,优先级高的配置会覆盖优先级低的配置。
还可以开启Log4j2自身的调试日志,查看配置加载过程,在log4j2.xml的根节点设置status="DEBUG",就可以看到Log4j2加载配置的细节,方便定位配置不生效的原因。