2013-08-19 29 views
6

Tôi có ứng dụng giao diện điều khiển để in đầu ra bằng Log4J. Điều này rất hữu ích vì tôi có thể dễ dàng thực hiện một chuyển đổi để tùy chọn cũng hiển thị thông báo gỡ lỗi, mặc dù chúng được ẩn theo mặc định.Thanh tiến trình trên bảng điều khiển bằng Log4J hoặc LogBack

Ứng dụng này có một số hoạt động dài hoạt động dài trong đó thanh tiến trình sẽ phù hợp.

Cách tốt nhất để thực hiện điều này bằng cách sử dụng Log4J hoặc LogBack là gì?

+0

Tôi không hiểu câu hỏi. Bạn sẽ hiển thị thanh tiến trình trong mục nhập nhật ký như thế nào? Nếu bạn đã biết tiến độ, tại sao không in xx% được thực hiện? – ChrisM

Trả lời

3

Để viết thanh tiến trình hoặc bất kỳ loại cập nhật văn bản nào vào bảng điều khiển, chỉ cần kết thúc đầu ra của bạn với \r (chuyển trả về) thay vì \n (dòng mới) để dòng kế tiếp ghi đè lên. Điều này question đi vào chi tiết hơn. Thư viện F-ANSI cho phép bạn dễ dàng tạo ra giao diện điều khiển đẹp mắt, bao gồm ghi đè lên dòng trước đó.

Nhưng nếu bạn được thiết lập sử dụng khung ghi nhật ký, không chỉ điều này là không thể, nhưng nó không phải là những gì bạn muốn. Như ChrisM gợi ý, cách đúng đắn để đăng nhập tiến trình là đăng nhập một dòng mới thường xuyên với phần trăm được thực hiện cho đến thời điểm này. Bằng cách này, bạn có thể nhìn thấy cả những gì chương trình của bạn đang làm và bao xa nó là trong bối cảnh.

Điều bạn muốn làm là tách riêng nhật ký của bạn khỏi đầu ra thực tế của chương trình (đây thường là một ý tưởng hay, thậm chí không quan tâm đến vấn đề thanh tiến trình). Sử dụng khung đăng nhập của bạn để ghi lại thông tin về việc thực hiện chương trình; những thứ bạn hoặc một người nào đó gỡ lỗi sẽ được quan tâm. Đầu ra của chương trình thực tế nên được ghi trực tiếp đến stdout qua System.out.

Sau đó, bạn có thể quyết định riêng việc mình muốn làm với nhật ký của mình. Nó cũng có thể được ghi vào stdout và nhật ký và đầu ra của bạn có thể sống cùng nhau, nhưng tốt hơn là ghi vào stderr (giúp chuyển hướng dễ dàng hơn nhiều) hoặc tệp nhật ký (làm cho trình dọn dẹp đầu ra của chương trình của bạn) để tham khảo sau).


Ngoài ra, nếu Java không phải là một điều kiện tiên quyết lệnh pv cung cấp một thanh tiến trình tùy biến mạnh mẽ dựa trên số lượng dữ liệu được truyền dẫn qua nó.

Các vấn đề liên quan