Объедините файлы журнала (некоторые сжаты) в Java
Мне интересно, может ли кто-нибудь помочь мне выполнить эту операцию из Java.
zcat -f -- $(ls -t a_log_file.log*) > combined.log
Где есть a_log_file.log
, a_log_file.log.gz.1
, a_log_file.log.gz.2
... Я не смог найти ничего сложного. Я полагаю, я мог бы так или иначе просто запустить это из Java, но это похоже на неправильное решение.
1 ответ
File logDir = new File("path/to/log/files");
File[] nonGzippedFiles = logDir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return !pathname.getName().contains("gz");
}
});
FileOutputStream combinedLogFiles = new FileOutputStream(new File("path/to/combined.log"));
for (File nonGzippedFile : nonGzippedFiles) {
FileInputStream fileInputStream = new FileInputStream(nonGzippedFile);
int read = 0;
byte[] buff = new byte[128];
while ((read = fileInputStream.read(buff)) > 0) {
combinedLogFiles.write(buff, 0, read);
}
fileInputStream.close();
}
combinedLogFiles.close();
// path/to/combined.log now contains all the contents of the log files
Вы должны будете включить некоторую обработку исключений. Также это не делает уже сжатые журналы. Я предположил, что часть