@H_
404_0@我正在用Java编写
一个cod4服务器控制器(我知道那里有完美的服务器控制器,但我想从中学习)。 现在我想根据日志
文件中的条目采取具体的操作,这个
文件经常被鳕鱼更新,
文件会变得很大。 现在我怎样才能有效地读取每一秒左右
文件已经改变的部分呢?@H_
404_0@或者是否有办法将日志
文件中的所有
内容都发送给Java?(我读了一些关于pipe道的
内容)。 服务器在Linux上运行。 日志
文件不需要保存在同
一个位置,因为所有的东西都应该通过Java来保存。@H_
404_0@大约一秒或2秒的延迟是可以接受的,但不再是。@H_
404_0@有没有办法从
一个url执行“尾巴-f”?@H_
404_0@awk,pipe道和尾巴-f给予意想不到的行为@H_
404_0@如何获得“tail -f”的“即时”
输出作为input?@H_
404_0@尾巴-f总是使用inotify?@H_
404_0@pipe道尾部
输出虽然grep两次@H_
404_0@连续grep,
输出在控制台上的同
一个地方@H_
404_0@尾巴-f + grep?@H_
404_0@如何在远程机器上执行Perl程序?@H_
404_0@如何使用Linux或
PHP将
文件保存到1000行?@H_
404_0@Shell
函数在特定时间内为特定string定尾日志
文件@H_
404_0@也许你可以执行'tail -f logfile.txt'子进程并监视
输出流?@H_
404_0@http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Process.html@H_
404_0@读取日志
文件时,可以在没有更多条目时暂停,然后继续处理。 该过程将继续运行,而
文件正在写入,只会读取附加到最后的附加行。@H_
404_0@BufferedReader br = ...; String line = null; while (true) { line = br.readLine(); if (line == null) //
nothing more to read,wait... { Thread.sleep(delay); } else { process(line); // take action } }@H_
404_0@注意:如果
文件被
关闭并翻转,这可能不会起作用,并且您将不得不做更复杂的处理。@H_
404_0@你可以使用RandomAccessFile 。 你可以将指针存储到最后
一个你有红色的字节,如下所示:@H_
404_0@String pathToYourFile = "/path/to/your/logfile"; long lastBytePosition = 0; boolean shouldStop = false; while (! shouldStop) { Thread.sleep(2000); File f = new File(pathToYourFile); long length = f.length(); RandomAccessFile raf = new RandomAccessFile(f,"r"); byte[] buff = new byte[(int) (length - lastBytePosition)]; raf.readFully(buff,(int) lastBytePosition,(int) (length - lastBytePosition)); shouldStop = processChunk(buff); lastBytePosition = (int) length; }@H_
404_0@其中processChunk是处理来自
文件的新输入的
方法。@H_
404_0@这远非卓越,但我认为你有这个想法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。