- 3,714,552 Users
- 2,242,576 Discussions
- 7,844,931 Comments
Forum Stats
Discussions
Categories
- 12 Data
- 362.2K Big Data Appliance
- 6 Data Science
- 1.5K Databases
- 440 General Database Discussions
- 3.7K Java and JavaScript in the Database
- 22 Multilingual Engine
- 487 MySQL Community Space
- 3 NoSQL Database
- 7.6K Oracle Database Express Edition (XE)
- 2.7K ORDS, SODA & JSON in the Database
- 415 SQLcl
- 42 SQL Developer Data Modeler
- 184.8K SQL & PL/SQL
- 21K SQL Developer
- 1.8K Development
- 3 Developer Projects
- 32 Programming Languages
- 135K Development Tools
- 7 DevOps
- 3K QA/Testing
- 231 Java
- 4 Java Learning Subscription
- 10 Database Connectivity
- 65 Java Community Process
- Java 25
- 8 Java APIs
- 141.1K Java Development Tools
- 5 Java EE (Java Enterprise Edition)
- 153K Java Essentials
- 134 Java 8 Questions
- 86.2K Java Programming
- 270 Java Lambda MOOC
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 10 Java SE
- 13.8K Java Security
- 3 Java User Groups
- 22 JavaScript - Nashorn
- 18 Programs
- 118 LiveLabs
- 28 Workshops
- 9 Software
- 3 Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 3 Deutsche Oracle Community
- 10 Español
- 1.9K Japanese
- 2 Portuguese
Consuming an increasing file with Java

User_4MPMN
Member Posts: 3 Red Ribbon
Hi all,
I have to write a java program which have to parse an Apache log. As the Apache log grows continuously throughout the day I would like the java program listens continuously any new record in the log so I can parse it at real time. (I don't want to start to parse the log everytime from the beginning).
Any suggestions ?
Thanks in advance
Lele
Tagged:
Answers
-
Hello,
here is some simple static method that behaves like Linux/Unix 'tail -f <some_filename>'.
Sleep period is hardcoded to 3000ms and the payload i.e. what the method is doing with the file content is simply println() to stdout.
BR,
Roland
12 public static void tail(String fname) 13 throws InterruptedException, IOException, FileNotFoundException, InterruptedException 14 { 15 RandomAccessFile f = new RandomAccessFile( fname, "r" ); 16 long posInFile = 0; 17 18 while (true) { 19 long fileLength = f.length(); 20 if (fileLength > posInFile) { 21 f.seek(posInFile); 22 String line = f.readLine(); 23 while( line != null ) { 24 System.out.println(line); // payload // 25 line = f.readLine(); 26 } 27 posInFile = f.getFilePointer(); 28 } 29 30 Thread.sleep(3000); 31 } 32 }
-
Hi Roland, thanks for your suggestion.
I'll try it
Gabriele