Ошибка монитора журнала с Java и org.apache.commons.io.input.Tailer - PullRequest
0 голосов
/ 25 января 2011

Я пытаюсь использовать это для мониторинга файла журнала и помещения строк журнала в базу данных по мере их поступления. У меня проблема в том, что кажется, что во время работы потока, содержащего мой TailerListener, я не могу удалить или переименоватьфайл журнала.В таком случае, я не уверен, как это отреагирует, когда файл журнала перевернется, что происходит ночью.Я взглянул на код для Tailer, и он, кажется, обрабатывает опрокидывание журнала, но я не вижу, как, когда отслеживаемый файл в основном заблокирован.

Не должно быть никаких причин, по которым файл нельзя удалить, как ятолько чтение из него.Я думаю, что, как только файл будет удален / переименован, он просто выдаст какой-то тип исключения.Тем более что, похоже, написано, что Tailer направлен на функциональность «tail -f».

Точная ошибка, которую я получаю при попытке удалить файл: «Это действие не может быть выполнено, потому что файл открытв Java (TM) Platform SE двоичный файл "

Вот пример кода из моего проекта:


public static void main(String[] args) {
        // TODO code application logic here
        File pcounter_log = new File("c:\development\temp\test.log");</p>

<pre><code>    try {
        TailerListener listener = new PCTailListener();
        Tailer tailer = new Tailer(pcounter_log, listener, 5000);

        Thread thread = new Thread(tailer);
        thread.start();
    } catch (Exception e) {
        System.out.println(e);
    }
}

<code>
public class PCTailListener extends TailerListenerAdapter {
 public void handle(String line) {
  System.out.println(line);
 }
}

Любая информация по этому поводу, касающаяся, в частности, Tailer, обработки файлов в Java, всего, что может поставить меня на правильный путь, очень ценится.

1 Ответ

0 голосов
/ 25 января 2011

Если процесс использует этот файл, вы не можете удалить / переименовать его, но вы можете прочитать его. Что вы можете сделать, это скопировать файл и выполнить все операции в скопированном файле.

Почему вы не можете изменить его? Потому что, возможно, есть открытый поток, блокирующий файл.

...