Wie der Link das erste, was geteilt Sie müssen log Beobachter in einem separaten Thread starten:
Thread one = new Thread(){
public void run() {
System.out.println("start watching log.");
updateLog();
}
};
one.start();
Nachdem Sie können WatchService verwenden, um die Protokolldateien Änderungen dann Verwenden SWT Display-asyncExec zu erkennen, das Protokoll anzuzeigen Änderungen:
WatchService watchService = FileSystems.getDefault().newWatchService();
path.register(watchService, StandardWatchEventKinds.ENTRY_MODIFY);
WatchKey key;
while ((key = watchService.take()) != null) {
for (WatchEvent<?> event : key.pollEvents()) {
System.out.println("Event kind:" + event.kind() + ". File affected: " + event.context() + ".");
if (event.context().toString().endsWith(logfileName)) {
shlLogViewer.getDisplay().asyncExec(new Runnable() {
public void run() {
logDisplay.setText(readFromFile(LOG_FILE_SIZE));
}
});
}
}
key.reset();
Thread.sleep(1000);
}
Verwenden etwas ähnliches wie http://stackoverflow.com/a/37594490/2670892 –
Dank greg-449, bin ich etwas verwirrt, wie die Datei rekursiv zu lesen. Wie benutze ich die Alarmfunktion um mein Textarea zu aktualisieren? Lassen Sie mich versuchen, es zu implementieren und zu Ihnen mit frischen Fragen zurückzukehren. – Subramanian