gpt4 book ai didi

java - 持续读取附加到日志文件的行

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:27 25 4
gpt4 key购买 nike

关于我之前的question ,我发现maven并不能真正输出jboss控制台。所以我想我想解决它。这是交易:

当 jboss 运行时,它会将控制台日志写入 server.log 文件,所以我试图在数据进入时检索数据,因为文件每隔几秒就会被 jboss 更改/更新我遇到了一些困难所以我需要帮助。

我真正需要的是:

  1. 读取文件server.log
  2. 当 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());
}
}
}

根据 Montecristo 的建议,我这样做了:

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

最佳答案

我不知道你的方向是否正确,但如果我理解正确,你会发现这很有用:java-io-implementation-of-unix-linux-tail-f

关于java - 持续读取附加到日志文件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2238369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com