欢迎内容中日志文件的 Jboss EAP 7 符号链接不起作用

Posted

技术标签:

【中文标题】欢迎内容中日志文件的 Jboss EAP 7 符号链接不起作用【英文标题】:Jboss EAP 7 symbolic link to log file in welcome-content does not work 【发布时间】:2017-11-27 03:55:46 【问题描述】:

我想要一种简单的方法来查看/下载测试服务器上的日志文件(适用于无法通过 ssh 访问服务器的外部供应商)。

我尝试在 jboss home/welcome-content 文件夹中执行的操作:

ln -s jboss home/standalone/log/server.log server.log

这会创建到日志文件的符号链接,但是当我尝试通过 chrome 查看日志文件时:http://internal ip:8080/server.log 它不起作用。

如果我使用 ln -P 来创建物理链接,它可以工作,但是当日志文件翻转(即一天结束)时,它仍然指向旧的日志文件而不是新的 server.log,即不可取。

我也不想为了显示日志文件而创建新的战争文件并部署它。

有什么想法吗?

【问题讨论】:

我没有解决方案,但我有一个解决方法。每次日志文件角色结束时创建物理链接,因为我们进行夜间构建,所以在服务器启动后,shell 脚本运行 ln -P 命令。仍然想知道为什么符号链接在欢迎内容中不起作用 在 EAP 7 中,您可以在管理控制台中查看日志文件,它将显示来自服务器日志目录的所有日志文件。你试过这种方法吗? 感谢您的建议。我确实尝试过,但出现以下错误:“failure-description”=>“WFLYCTL0030: No resource definition is registered for address [(\"subsystem\" => \"logging\")] 我猜这是由于我们删除了standalone.xml 中与我们的log4j 冲突的默认配置。对于它的价值,您的建议可能是未来其他人的有效解决方案。 【参考方案1】:

虽然您在评论中说您删除了日志子系统,但有几种方法可以通过 HTTP 管理界面下载日志文件。不过,它们确实需要存在日志记录子系统,并且日志文件必须位于 jboss.server.log.dir 和已知的文件处理程序中。

使用卷曲:

curl --digest -L -D - http://127.0.0.1:9990/management?useStreamAsResponse --header "Content-Type: application/json" -u admin:admin.1234 -d '"operation":"read-attribute","address":["subsystem":"logging","log-file":"server.log"],"name":"stream"' -o server.log

或者在浏览器中: http://localhost:9990/management/subsystem/logging/log-file/server.log?operation=attribute&name=stream&useStreamAsResponse

正如另一条评论所述,您也可以使用管理控制台本身。

另一种选择是使用管理 API 创建您自己的下载函数。

try (ModelControllerClient client = ModelControllerClient.Factory.create(InetAddress.getLocalHost(), 9990)) 
    final ModelNode address = Operations.createAddress("subsystem", "logging", "log-file", "server.log");
    final ModelNode op = Operations.createReadResourceOperation(address);
    op.get("include-runtime").set(true);
    final OperationResponse response = client.executeOperation(OperationBuilder.create(op).build(), OperationMessageHandler.logging);
    final ModelNode outcome = response.getResponseNode();
    if (Operations.isSuccessfulOutcome(outcome)) 
        final String uuid = Operations.readResult(outcome).get("stream").asString();
        final InputStream in = response.getInputStream(uuid).getStream();
        final byte[] buffer = new byte[64];
        int len;
        while ((len = in.read(buffer)) != -1) 
            System.out.write(buffer, 0, len);
        
    

同样,尽管所有这些选项都需要使用日志记录子系统。

【讨论】:

我不愿意将此标记为正确,因为符号链接不起作用的原始问题仍然存在。但是,请对有用的建议投赞成票。干杯。 可以理解。我主要只是“按原样”回答这个问题,因为它只是关于不使用日志子系统的评论。

以上是关于欢迎内容中日志文件的 Jboss EAP 7 符号链接不起作用的主要内容,如果未能解决你的问题,请参考以下文章

JBoss EAP 6.4.4 中的空日志文件(日志配置文件)

从 JBoss 7 EAP 中排除提供的 jackson 版本

Jboss EAP 6.2 log4j.properties 不记录输出但创建日志文件

如何为 Undertow / JBoss 7.2 EAP 重写 RewriteValve?

JBoss EAP 7.3 上的 Primefaces 6 文件上传问题

无法在 Jboss EAP 7.0 服务器中创建 oracle 数据源