Домой Учебники по Java и J2EE Реализация Log File Tailer (tail -f) в Java — Лучший способ программно...

Реализация Log File Tailer (tail -f) в Java — Лучший способ программно подобрать любой файл

634
0

Файловые операции с использованием Java — моя любимая часть. На Crunchify вы можете увидеть несколько учебных пособий, таких как добавление данных в файл, чтение данных из файла, чтение и анализ файла JSON , чтение файла config.properties во время запуска сервера и т. Д.

В этом уроке мы рассмотрим шаги по реализации Linux tail -f Команда в Java. Java IO реализация unix / linux «tail -f». Как я могу подписаться на файл типа «Tail -f»?

Давайте начнем:

  1. Создать класс CrunchifyTailFOnLogFile_LogFileTailer .Джава
  2. От основного метода запуска службы executor до запуска файла журнала, т. Е. CrunchifyExecutor .execute ( crunchify_tailF ); который внутренне вызывает run()
  3. Также позвоните appendData() метод, который добавит новую строку в файл каждый 5 seconds
  4. Как только новая строка будет добавлена в файл, тейлер выберет и распечатает ее в Eclipse Console.
CrunchifyTailFOnLogFile_LogFileTailer.java

Джава
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
пакет ком . crunchify. учебные пособия ;
Импортировать Java. Ио. BufferedWriter ;
Импортировать Java. Ио. Файл ;
Импортировать Java. Ио. FileWriter ;
Импортировать Java. Ио. RandomAccessFile ;
Импортировать Java. Util. одновременно. ExecutorService ;
Импортировать Java. Util. одновременно. Исполнители ;
/ **
*
* @author https://crunchify.com
* /
общественности учебный класс CrunchifyTailFOnLogFile_LogFileTailer инвентарь Runnable {
частный логический отлаживать знак равно ложь ;
частный ИНТ crunchifyRunEveryNSeconds знак равно 2000 ;
частный долго lastKnownPosition знак равно 0 ;
частный логический shouldIRun знак равно правда ;
частный Файл crunchifyFile знак равно ноль ;
частный статический ИНТ crunchifyCounter знак равно 0 ;
общественности CrunchifyTailFOnLogFile_LogFileTailer ( String мой файл , ИНТ мойИнтервал ) {
crunchifyFile знак равно новый Файл ( myFile ) ;
это. crunchifyRunEveryNSeconds знак равно myInterval ;
}
частный недействительным printLine ( Строка сообщение ) {
Система. вне. println ( сообщение ) ;
}
общественности недействительным stopRunning ( ) {
shouldIRun знак равно ложь ;
}
общественности недействительным запустить ( ) {
пытаться {
в то время как ( shouldIRun ) {
Thread. сон ( crunchifyRunEveryNSeconds ) ;
долго fileLength знак равно crunchifyFile . длина ( ) ;
если ( fileLength > lastKnownPosition ) {
// Чтение и запись файла
RandomAccessFile readWriteFileAccess знак равно новый RandomAccessFile ( crunchifyFile , rw ) ;
readWriteFileAccess . seek ( lastKnownPosition ) ;
строка crunchifyLine знак равно ноль ;
в то время как ( ( crunchifyLine знак равно readWriteFileAccess . readLine ( ) ) ! знак равно ноль ) {
это. printLine ( crunchifyLine ) ;
crunchifyCounter ++ ;
}
lastKnownPosition знак равно readWriteFileAccess . getFilePointer ( ) ;
readWriteFileAccess . закрыть ( ) ;
} еще {
если ( отладка )
это. printLine ( Хмм .. Не удалось найти новую строку после строки # + crunchifyCounter ) ;
}
}
} ловить ( Исключение е ) {
stopRunning ( ) ;
}
если ( отладка )
это. printLine ( «Выйти из программы …» ) ;
}
общественности статический недействительным главная ( Строка argv [ ] ) {
ExecutorService crunchifyExecutor знак равно Исполнители . newFixedThreadPool ( 4 ) ;
// Заменим имя пользователя на ваше реальное значение
// Для окон укажите другой путь, например: c: //temp//crunchify.log
строка Путь файла знак равно /Users//Downloads/crunchify.log ;
CrunchifyTailFOnLogFile_LogFileTailer crunchify_tailF знак равно новый CrunchifyTailFOnLogFile_LogFileTailer ( filePath , 2000 ) ;
// Запустить запуск файла журнала tailer для файла crunchify.log
crunchifyExecutor . выполнить ( crunchify_tailF ) ;
// Начать закачку данных в файл crunchify.log
appendData ( filePath , правда , 5000 ) ;
}
/ **
* Используйте метод appendData для добавления новой строки в файл, так что вышеупомянутый метод может быть напечатан в Eclipse Console
*
* @param filePath
* @param shouldIRun
* @param crunchifyRunEveryNSeconds
* /
частный статический недействительным appendData ( String filePath , логический shouldIRun , ИНТ crunchifyRunEveryNSeconds ) {
FileWriter fileWritter ;
пытаться {
в то время как ( shouldIRun ) {
Thread. сон ( crunchifyRunEveryNSeconds ) ;
fileWritter знак равно новый FileWriter ( filePath , правда ) ;
BufferedWriter bufferWritter знак равно новый BufferedWriter ( fileWritter ) ;
строка данные знак равно /nCrunchify.log содержимое файла: + Математика случайный ( ) ;
bufferWritter . написать ( данные ) ;
bufferWritter . закрыть ( ) ;
}
} ловить ( Исключение е ) {
эл . printStackTrace ( ) ;
}
}
}

Надеюсь, вы найдете эту реализацию Java лучше всего подходит для хвостовой команды Unix. Вот пример кода для хвоста файла журнала с использованием Java.

Выход:

Дайте мне знать, если у вас возникнут проблемы с отслеживанием файла на Java. Это простая хвостовая программа на Java.

Реализация Log File Tailer (tail -f) в Java — Лучший способ программно подобрать любой файл

0.00 (0%) 0 votes

ЧИТАТЬ ТАКЖЕ:  Как создать простой кэш в памяти в Java (Lightweight Cache)

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь