欢迎内容中指向日志文件的Jboss EAP 7符号链接无效

欢迎内容中指向日志文件的Jboss EAP 7符号链接无效,jboss,wildfly,symlink,jboss-eap-7,Jboss,Wildfly,Symlink,Jboss Eap 7,我想要一种在测试服务器上查看/下载日志文件的简单方法(对于无法通过ssh访问服务器的外部供应商) 我试图在{jboss home}/welcome content文件夹中执行的操作: ln-s{jboss home}/standalone/log/server.log server.log 这将创建指向日志文件的符号链接,但当我尝试通过chrome:http://{internal ip}:8080/server.log查看日志文件时,它不起作用 如果我使用ln-p,创建一个物理链接是可行的,但

我想要一种在测试服务器上查看/下载日志文件的简单方法(对于无法通过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,这是不可取的

我也不想麻烦地创建一个新的war文件,并仅仅为了显示日志文件而部署它


有什么想法吗?

尽管您在评论中说您删除了日志子系统,但有几种方法可以通过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
或在浏览器中:

正如另一条评论提到的,您也可以使用管理控制台本身

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

try(ModelControllerClient=ModelControllerClient.Factory.create(InetAddress.getLocalHost(),9990)){
最终模型节点地址=Operations.createAddress(“子系统”、“日志”、“日志文件”、“服务器.log”);
final ModelNode op=Operations.createReadResourceOperation(地址);
op.get(“包含运行时”).set(true);
最终操作响应=client.executeOperation(OperationBuilder.create(op.build(),OperationMessageHandler.logging);
最终ModelNode结果=response.getResponseNode();
if(操作。发布成功结果(结果)){
最后一个字符串uuid=Operations.readResult(output.get(“stream”).asString();
final InputStream in=response.getInputStream(uuid.getStream();
最终字节[]缓冲区=新字节[64];
内伦;
而((len=in.read(buffer))!=-1){
系统输出写入(缓冲区,0,len);
}
}
}

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

尽管您在评论中说删除了日志子系统,但有几种方法可以通过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
或在浏览器中:

正如另一条评论提到的,您也可以使用管理控制台本身

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

try(ModelControllerClient=ModelControllerClient.Factory.create(InetAddress.getLocalHost(),9990)){
最终模型节点地址=Operations.createAddress(“子系统”、“日志”、“日志文件”、“服务器.log”);
final ModelNode op=Operations.createReadResourceOperation(地址);
op.get(“包含运行时”).set(true);
最终操作响应=client.executeOperation(OperationBuilder.create(op.build(),OperationMessageHandler.logging);
最终ModelNode结果=response.getResponseNode();
if(操作。发布成功结果(结果)){
最后一个字符串uuid=Operations.readResult(output.get(“stream”).asString();
final InputStream in=response.getInputStream(uuid.getStream();
最终字节[]缓冲区=新字节[64];
内伦;
而((len=in.read(buffer))!=-1){
系统输出写入(缓冲区,0,len);
}
}
}

尽管所有这些选项都需要使用日志子系统。

我没有解决方案,但我有一个解决办法。每次日志文件角色结束时都创建物理链接,因为我们每晚都进行构建,在服务器启动后,shell脚本运行ln-P命令。仍然想知道为什么符号链接在欢迎内容中不起作用在EAP 7中,您可以在管理控制台中检查日志文件,它将显示服务器日志目录中的所有日志文件。你试过那种方法吗?谢谢你的建议。我确实尝试过,但我得到了以下错误:“failure description”=>“WFLYCTL0030:没有为地址[(\“subsystem\”=>“logging\”)注册资源定义]我猜这是因为我们删除了standalone.xml中与我们的log4j冲突的默认配置。值得一提的是,您的建议可能是未来其他人的有效解决方案。我没有解决方案,但我有一个解决方法。每次日志文件角色结束时都创建物理链接,因为我们每晚都会构建一个服务器启动后,shell脚本将运行ln-P命令。仍然想知道为什么符号链接在欢迎内容中不起作用。在EAP 7中,您可以在管理控制台中检查日志文件,它将显示服务器日志目录中的所有日志文件。您尝试过这种方法吗?谢谢您的建议。我尝试过,但出现以下错误:故障描述“=>”WFLYCTL0030:没有为地址[(\“subsystem\”=>“logging\”)注册资源定义我猜这是因为我们删除了standalone.xml中与log4j冲突的默认配置。你的建议对将来的其他人来说可能是一个有效的解决方案。我不愿意把这个标记为正确的,因为最初的符号链接不起作用的问题仍然存在。但请让我投票赞成这些有益的建议。干杯,可以理解。我主要是“照原样”回答这个问题,因为这只是一个关于不使用日志子系统的评论。我不愿意将其标记为正确,因为符号链接不工作的原始问题仍然存在。但请让我投票赞成这些有益的建议。干杯,可以理解。伊玛