嵌入式模式下的 Wildlfy CLI 调试

问题描述 投票:0回答:1

创建嵌入式服务器时通过

EmbeddedProcessFactory.createStandaloneServer

不可能启用 stdout 回显 - 命令

--std-out=echo
arg 在这里是不允许的。

现在在此服务器上调用 CLI 命令会丢弃所有输出,如果任何错误消息都没有意义,如何调试它?

command-line-interface wildfly
1个回答
0
投票

好的!据我所知,即使

--std-out=echo
参数不可用,您仍然可以访问服务器日志。

import org.jboss.as.controller.client.ModelControllerClient;
import org.jboss.as.controller.client.helpers.ClientConstants;
import org.jboss.as.controller.client.helpers.Operations;
import org.jboss.as.controller.client.helpers.domain.DomainClient;
import org.jboss.as.controller.client.helpers.domain.ServerStatus;
import org.jboss.dmr.ModelNode;
import org.wildfly.core.embedded.EmbeddedProcessFactory;
import org.wildfly.core.embedded.StandaloneServer;
import java.util.concurrent.TimeUnit;

public class WildFlyEmbeddedExample {
    public static void main(String[] args) throws Exception {
        StandaloneServer server = EmbeddedProcessFactory.createStandaloneServer();
        server.start();
        try (ModelControllerClient client = server.getModelControllerClient()) {
            // Example CLI command to get the server state
            ModelNode op = Operations.createOperation(ClientConstants.READ_RESOURCE_OPERATION);
            op.get(ClientConstants.INCLUDE_RUNTIME).set(true);
            ModelNode response = client.execute(op);
            System.out.println(response.toString());

            // Access server logs
            String serverLogs = server.getOutput();
            System.out.println(serverLogs);
        } finally {
            server.stop();
        }
    }
}

但如果我没记错的话,可以通过

EmbeddedServer.getOutput()
方法访问服务器日志。所有魔法,访问 CLI 命令。
getOutput()
方法并将它们打印到控制台。

这应该有助于调试在嵌入式模式下执行 CLI 命令期间抛出的任何错误。

© www.soinside.com 2019 - 2024. All rights reserved.