Объедините файлы журнала (некоторые сжаты) в 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

Вы должны будете включить некоторую обработку исключений. Также это не делает уже сжатые журналы. Я предположил, что часть

Другие вопросы по тегам