0

我想远程监控我的 Java EE 应用程序(部署在 glassfish 服务器上)的活动。基本上,我希望我的客户端使用 Vaadin 实现以显示有关服务器端活动的日志。

用户想知道服务器端发生了什么......这些日志应该只是高级信息消息

我想这真的取决于使用的日志框架(如果有的话)。我见过 log4j 的 Chainsaw 但这本身就是一个客户端。否则,我可以逐行远程读取文件(如tail -f)......但我也不知道该怎么做。

实现这种事情的最佳解决方案是什么?

4

2 回答 2

2

一般来说,您可以做的只是使用 Vaadin 标签,无限读取日志文件(或更确切地说直到停止)并将文件内容附加到标签。这是一个 for 的代码,它正是这样做的:

      Thread t = new Thread() {
        @Override
        public void run() {

            BufferedReader reader = null;
            try {
                reader = new BufferedReader(new FileReader(LOGFILE));
                String line;
                while (running) {
                    line = reader.readLine();
                    if (line == null) {
                        // wait until there is more lines in the file
                        Thread.sleep(POLL_MS);
                    } else {
                        // append to the log Label
                        synchronized (MyApplication.this) {
                            log.setValue(log.getValue() + line + "<br />");
                        }
                    }
                }
            } catch (IOException e) {
                // TODO: handle me
                e.printStackTrace();
            } catch (InterruptedException e) {
                // TODO: handle me
                e.printStackTrace();
            } finally {
                running = false;
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (IOException ignore) {
                    }
                }
            }

        }
    };
    t.start();

为此,您需要一个“RAW”模式标签和一个轮询服务器的ProgressIndicator

    ProgressIndicator pi = new ProgressIndicator();
    pi.setPollingInterval(POLL_MS);
    pi.setIndeterminate(true);
    layout.addComponent(pi);

免责声明:此代码来自非关键应用程序,例如缺少错误处理和 HTML 转义。

于 2012-09-10T10:26:49.347 回答
1

我看到您想在您的应用程序中执行此功能。我不确定您是否可以利用 Chainsaw 在 Vaadin 中使用的部分,但如果您好奇,可以查看 VFSLogFilePatternReceiver。

无论如何,如果你想试试电锯信息,看看它是否适合你:

Chainsaw 可以从 Commons VFS 支持的一个文件系统(http、ssh、ftp、smb)读取日志文件、事件远程文件。

如果您愿意,请尝试最新的开发人员快照 - 配置屏幕有望让您清楚地了解如何跟踪日志文件,并且具有当前发布版本中不可用的大量功能。

可在此处获取快照:http: //people.apache.org/~sdeboy

于 2012-09-10T16:57:18.013 回答