WildFly Maven插件v4.2.1.Final无法输出java.util.logging的FINE及以下日志
问题解决:WildFly Maven插件无法输出java.util.logging的FINE及以下日志
核心问题分析
- CLI脚本执行失败:报错提示命令上下文不可用,根源在于脚本路径错误、离线模式配置冲突、脚本内重复启动嵌入式服务器;
- 日志级别不生效:CLI中配置的Logger包名与实际代码包不匹配,导致日志规则未应用到目标代码;
- 依赖加载异常:Elytron的SaslProvider找不到是插件与服务器连接异常引发的连锁问题,修复连接后可自动解决。
分步解决方案
1. 修正Maven插件配置
修改pom.xml中的WildFly插件配置,解决路径错误和离线模式冲突:
<plugin> <groupId>org.wildfly.plugins</groupId> <artifactId>wildfly-maven-plugin</artifactId> <version>${wildfly-plugin.version}</version> <configuration> <version>${wildfly.version}</version> <server-config>standalone-full.xml</server-config> <!-- 移除offline配置:dev目标启动嵌入式服务器,需要连接控制器 --> <scripts> <!-- 修正脚本路径:脚本位于项目根目录,而非默认的src/main/scripts --> <script>${basedir}/configure-logging.cli</script> </scripts> </configuration> </plugin>
2. 调整CLI脚本内容
删除脚本中重复的服务器启停命令,针对运行中的服务器配置日志规则:
# 提升控制台Handler级别,确保能接收FINE及以下日志 /subsystem=logging/console-handler=CONSOLE:write-attribute(name=level, value=TRACE) # 为实际代码包添加Logger,设置级别为FINE(按需调整为TRACE/FINER) /subsystem=logging/logger=org.eclipse.jakarta.servlet:add(level=FINE)
3. 验证代码中的日志使用
确保代码中正确初始化java.util.logging.Logger:
package org.eclipse.jakarta.servlet; import java.util.logging.Logger; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/echo1") public class Echo1Servlet extends HttpServlet { private static final Logger logger = Logger.getLogger(Echo1Servlet.class.getName()); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { // 输出FINE级别日志 logger.fine("处理GET请求,路径:" + req.getRequestURI()); resp.getWriter().write("Echo1响应"); } }
4. 测试验证
执行命令启动服务器:
mvn clean wildfly:dev
访问Servlet(如http://localhost:8080/jakartaee-hello-world/echo1),查看控制台输出,确认FINE级别的日志已正常打印。
内容的提问来源于stack exchange,提问作者oceano1970526
相关产品推荐
相关产品推荐

