JBoss EAP 6.4域模式下console.log输出DEBUG日志异常问题
针对域模式下console.log不断生成DEBUG日志、文件快速膨胀的问题,以下是精准的排查和解决步骤:
1. 检查主机控制器的独立日志配置
域模式下,主机控制器(Host Controller)有专属的日志配置文件host.xml,而非依赖domain.xml。打开该文件定位<subsystem xmlns="urn:jboss:domain:logging:1.4">节点:
- 确认
ROOT日志记录器的级别为INFO - 检查
CONSOLE处理器的级别,若为DEBUG直接修改为INFO
示例配置片段:
<root-logger> <level name="INFO"/> <handlers> <handler name="CONSOLE"/> <handler name="FILE"/> </handlers> </root-logger> <console-handler name="CONSOLE"> <level name="INFO"/> <formatter> <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> </formatter> </console-handler>
2. 修正CLI命令并重新配置控制台处理器
你之前执行的移除CONSOLE处理器命令未生效,大概率是占位符*profile-name*未替换为实际profile名称(如full、default)。建议优先修改处理器级别而非直接移除:
/profile=full/subsystem=logging/console-handler=CONSOLE:write-attribute(name=level,value=INFO) /profile=full/subsystem=logging/root-logger=ROOT:write-attribute(name=level,value=INFO)
执行后重启服务器组或主机控制器使配置生效。
3. 排查启动脚本中的强制DEBUG参数
检查domain.sh(Linux)或domain.bat(Windows)中的JAVA_OPTS配置,确认是否存在强制设置DEBUG级别的系统属性:
- 删除或修改类似
-Dorg.jboss.logging.Logger.level=DEBUG、-Dlogging.level=DEBUG的参数为INFO - 同时排查
-verbose:gc等会输出调试信息的参数,按需调整
4. 检查服务器组的实例启动参数
打开domain.xml,查看目标服务器组的system-properties节点,确认是否存在覆盖日志级别的属性:
<server-group name="your-server-group" profile="full"> <system-properties> <!-- 移除或修改以下属性 --> <property name="org.jboss.logging.Logger.level" value="DEBUG"/> </system-properties> </server-group>
5. 最终方案:禁用console.log生成(可选)
若以上方法均无效,可直接修改启动脚本阻止控制台输出写入文件:
- Linux:在
domain.sh中找到>> "$JBOSS_CONSOLE" 2>&1,替换为>/dev/null 2>&1 - Windows:在
domain.bat中找到>> "%JBOSS_CONSOLE%" 2>&1,替换为>NUL 2>&1
问题示例日志:
[Server:xxxxxxx] 2023-01-17 12:35:55 DEBUG DefaultListableBeanFactory:242 - Returning cached instance of singleton bean 'SessionFactory'
[Server:xxxxxxx] 2023-01-17 12:36:00 DEBUG SQLServerConnection:294 - ConnectionID:4 created by (SQLServerDriver:4)
内容的提问来源于stack exchange,提问作者Davernos

