一般に、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 エスケープが欠落しています。