Tôi đang làm việc trên một chương trình giám sát đọc tệp /var/log/auth.log. Tôi đang sử dụng Apache Commons IO Tailer
lớp để đọc tệp trong thời gian thực. Để bắt đầu, tôi muốn kiểm tra phần đọc thời gian thực trên một tệp đơn giản và nhập thủ công một số mã trong dòng điều khiển. Đây là mã của tôi:Ví dụ về Apache Commons IO Tailer
public class Main {
public static void main(String[] args) {
TailerListener listener = new MyListener();
Tailer tailer = Tailer.create(new File("log.txt"), listener, 500);
while(true) {
}
}
}
public class MyListener extends TailerListenerAdapter {
@Override
public void handle(String line) {
System.out.println(line);
}
}
Và từ nhà ga: sudo echo "Hello" >> log.txt
Vấn đề là khi tôi cố gắng viết bằng tay một cái gì đó trong tập tin, nó không in nó trong giao diện điều khiển. Tôi đã cố gắng tìm một ví dụ cụ thể về cách sử dụng lớp Tailer, nhưng không may mắn. Tôi làm gì sai ở đây?
'while (true) {}' không bao giờ là ý hay. Bạn có đang khởi chạy MyListener trong một chuỗi riêng biệt không? Bạn nên thêm ít nhất một 'Thread.sleep (...)' vào vòng lặp của bạn. – SebastianH
Tôi không chắc tại sao bạn lại bị bỏ phiếu. Có vẻ như một câu hỏi rõ ràng với mã chứng minh vấn đề. –
bạn có thể đánh giá nó không? Tôi đã cố gắng làm rõ, phơi bày vấn đề và hiển thị mẫu mã của tôi. Tôi tôn trọng điều kiện của stackoverflow – user2435860