Относительно моего предыдущего вопроса , я обнаружил, что maven не может действительно выводить консоль jboss. Поэтому я подумал, что хотел бы обойти это. Вот сделка:
Когда jboss работает, он записывает консольные журналы в файл server.log, поэтому я пытаюсь получить данные по мере их поступления, потому что каждые несколько секунд файл изменяется / обновляется jboss. Я сталкиваюсь с некоторыми трудностями. поэтому мне нужна помощь.
Что мне действительно нужно, так это:
- читать файл server.log
- при изменении server.log с добавлением еще нескольких строк выведите изменение
Вот код, который я получил, есть проблема с ним, он работает бесконечно и запускается каждый раз с начала файла, я бы хотел, чтобы он продолжал печатать только новые строки из server.log , Надеюсь, в этом есть какой-то смысл, вот код:
import java.io.*;
class FileRead
{
public static void main(String args[])
{
try{
for(;;){ //run indefinitely
// Open the file
FileInputStream fstream = new FileInputStream("C:\\jboss-5.1.0.GA\\server\\default\\log\\server.log");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
// Print the content on the console
System.out.println (strLine);
}
//Close the input stream
in.close();
}
}
catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
}
}
Согласно предложению Монтекристо, я сделал это:
import java.io.*;
class FileRead {
public static void main(String args[]) {
try {
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream(
"C:\\jboss-5.1.0.GA\\server\\default\\log\\server.log");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String line;
// Read File Line By Line
while ((line = br.readLine()) != null) {
// Print the content on the console
line = br.readLine();
if (line == null) {
Thread.sleep(1000);
} else {
System.out.println(line);
}
}
// Close the input stream
in.close();
} catch (Exception e) {// Catch exception if any
System.err.println("Error: " + e.getMessage());
}
}
}
И он все еще не работает, он просто печатал оригинальный файл .. хотя файл постоянно меняется, ничего не происходит .. ничего не распечатывается, кроме исходного файла журнала.
ЗДЕСЬ РЕШЕНИЕ: tnx Montecristo
import java.io.*;
class FileRead {
public static void main(String args[]) {
try {
FileInputStream fstream = new FileInputStream(
"C:\\jboss-5.1.0.GA\\server\\default\\log\\server.log");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String line;
while (true) {
line = br.readLine();
if (line == null) {
Thread.sleep(500);
} else {
System.out.println(line);
}
}
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
}
}
Также см .:
http://vanillajava.blogspot.co.uk/2012/08/java-memes-which-refuse-to-die.html