【问题标题】:application logs (Payara 4.1.1) don't show up when configuring cluster with 2 instances (locale + remote)使用 2 个实例(区域设置 + 远程)配置集群时,应用程序日志(Payara 4.1.1)不显示
【发布时间】:2017-02-06 18:19:57
【问题描述】:

我已经用 Payara Server 完成了一个集群,该集群由两个实例组成,一个是 本地 广告驻留在 debian VM 上,另一个是远程,也驻留在另一个 debian VM 上。我部署了一个测试应用程序,当我在寻找日志时却找不到它们。更准确地说,我只提到一次几乎随机出现,然后仅此而已。它们显示在管理服务器中-->查看日志文件-->实例 1(本地)-->日志文件--> server.log

下面的测试应用程序

package clusterTest;

import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class MySession implements Serializable {

    private String val;
    private static final Logger LOG = Logger.getLogger(MySession.class.getName());



    public String getVal() {
        LOG.log(Level.INFO, "getVal{0}", val);
        System.out.println("getVal");
        return val;
    }

    public void setVal(String val) {
        LOG.log(Level.INFO, "setVal{0}", val);
        System.out.println("setVal");
        this.val = val;        
    }

}

image of the log file

【问题讨论】:

    标签: glassfish cluster-computing java.util.logging payara


    【解决方案1】:

    Payara 服务器为每个实例创建一个单独的目录,这样它就不会与域管理服务器的工作目录混合。

    简而言之,如果您的域名是domain1,您应该可以在PAYARA_INSTALL/glassfish/nodes/localhost-domain1/instance1/logs/server.log 中找到您本地实例的日志。

    Payara Server 以及 GlassFish 创建实例并将它们放置在节点下。节点代表实例的位置 - 在您的情况下,您很可能有一个本地节点和一个用于第二个远程实例的节点。它们的配置是 domain.xml 的一部分,但在首次启动实例之前,Payara Server 会在 glassfish/nodes 目录内的一个目录中生成另一个单独的目录,其中包含配置和运行时数据(如日志),该目录与 @987654326 位于同一目录中@目录。

    远程实例的文件应该存在于远程 Payara 服务器安装中的类似位置。

    【讨论】:

    • 您刚才所说的是正确的,鉴于此,我无法解释为什么,正如您从上图所见,测试应用程序仅写入 2 次日志,而不再是。我一直在测试,但是“LOG.log(Level.INFO, "getVal{0}", val);"不起作用。
    • 在你的截图中,只调用了getVal(),这意味着val变量还没有被初始化,因此第一个在SEVERE级别注销val为null。你真的应该在那里添加一个空检查,并正确初始化变量。
    • 另外,请注意管理控制台中的此页面不会动态更新;必须刷新页面。要真正确定发生了什么,您应该手动检查文件系统上的日志文件,正如 Ondrej 指出的那样。
    • 我在建议的文件系统上检查了@OndrejM 中的所有文件夹,除了之前显示的那些之外,我没有发现任何出现。此外,如果将测试应用程序部署到 payara 服务器中,日志记录的工作方式与预期完全相同。 Insted,当部署到集群 (payara) 中时,测试应用程序的日志不显示。
    • 如果 getVal 方法真的执行了更多次,您是否尝试过调试?如果是,您可以尝试以相同的方式调试 Payara - 源代码在 maven central 中可用。如果您认为这是 Payara Server 中的错误,您最好在 github 中报告问题,提供有关您的配置的详细信息,最好是示例应用程序。
    【解决方案2】:

    正如@nakag 已经在https://stackoverflow.com/a/31783809/2946593 所说的那样,使用 /ect/hosts 中的环回地址停止将日志显示到集群的实例中。 所以只需注释掉这一行:

    127.0.1.1 "name_of_server"

    在集群的每个节点上都解决了问题。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2016-09-28
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多