Có một chế độ xem nhật ký tốt cho các tệp nhật ký lớn?


11

Một số tệp nhật ký tôi đang làm việc khá lớn (> 200Mb) nhưng thật tuyệt khi duyệt chúng trong Emacs. Hiện tại, mặc định Emacs cố gắng kích hoạt chế độ log4j, điều này chỉ làm mọi thứ chậm lại. Điều tôi thực sự cần là một người xem nhẹ rằng:

  • tắt chế độ hoàn tác
  • có thể tự động hoàn nguyên khi tệp nhật ký được cập nhật
  • có thể theo đuôi của nhật ký khi nó cập nhật

Lý tưởng nhất là chỉ cần ánh xạ trong một phần nhỏ của tệp nhật ký khi bạn duyệt qua. Có bất kỳ chế độ đăng nhập như vậy tồn tại?


3
Không phải là câu trả lời của emacs, nhưng tôi đã thấy rằng sử dụng tmux với đuôi đơn giản -f đã cho tôi giải pháp tốt nhất, sử dụng tmux sẽ cho phép bạn dừng nhật ký và tìm kiếm xung quanh nó bằng cách sử dụng emacs như các ràng buộc. Các tệp nhật ký của tôi thường cao hơn 2gb và nó chạy tốt. Ngoài ra, vỏ Mx + đuôi -f + không có phông chữ là một giải pháp tốt.
Jordon Biondo

1
Không chính xác những gì bạn đang yêu cầu, nhưng có lẽ M-x fundamental-modesẽ là một cải tiến so với chế độ log4j về tốc độ.
Legoscia

@legoscia: yeah Tôi đã chuyển sang chế độ văn bản theo cách thủ công.
stsquad

Những gì tôi thường làm trong trường hợp này: tương tự như những gì @JordonBiondo đề xuất, ngoại trừ tôi đang sử dụng máy nhắn tin thay vì tail, tức là cat file.log | less. Điều này có lợi ích là có thể sử dụng tất cả các lệnh máy nhắn tin, chẳng hạn như tìm kiếm và hiển thị số lượng dòng tại một thời điểm.
wvxvw

Ngoài ra, đây: github.com/mbriggs/emacs-pager Tôi thấy tôi đã đánh dấu nó, nhưng không sử dụng ...
wvxvw

Câu trả lời:


7

Đây là những gì tôi sử dụng. Nó vô hiệu hóa mọi thứ có thể làm chậm tốc độ, làm cho bộ đệm chỉ đọc và thiết lập chế độ tự động hoàn nguyên đuôi:

;; automagically tail log files
(add-to-list 'auto-mode-alist '("\\.log\\'" . auto-revert-tail-mode))

(defun etc-log-tail-handler ()
  (end-of-buffer)
  (make-variable-buffer-local 'auto-revert-interval)
  (setq auto-revert-interval 1)
  (auto-revert-set-timer)
  (make-variable-buffer-local 'auto-revert-verbose)
  (setq auto-revert-verbose nil)
  (read-only-mode t)
  (font-lock-mode 0)
  (when (fboundp 'show-smartparens-mode)
    (show-smartparens-mode 0)))

(add-hook 'auto-revert-tail-mode-hook 'etc-log-tail-handler)

Nếu bạn không muốn emacs hoạt động theo cách này cho tất cả các bộ đệm chế độ tự động hoàn nguyên đuôi, bạn có thể thêm một kiểm tra để đảm bảo tệp thực sự kết thúc bằng .log ở đầu trình xử lý đuôi-log-tail-hoặc sử dụng bất cứ tiêu chí nào khác mà bạn thích.


2

Tôi đã sử dụng https://github.com/re5et/itail với thành công trong một vài năm.

Đây là chế độ đuôi mở trong bộ đệm của chính nó.


Ngoài ra, tôi đã điều chỉnh ESHELL đủ theo nhu cầu của mình để thoải mái chạy Leiningen và các công cụ xây dựng CLI khác một cách hợp lý để tôi có thể xem đầu ra xây dựng phát triển của mình một cách dễ dàng trong bộ đệm.
huntar

Thay vì bình luận , vui lòng chỉnh sửa bài đăng của riêng bạn để bao gồm thông tin bổ sung. (Sau khi bạn làm như vậy, bạn có thể xóa nhận xét của mình.)
Scott Weldon

@ScottWeldon Tôi nghĩ rằng thông tin bổ sung phù hợp hơn như một nhận xét
huntar

Nhận xét là để làm rõ, phê bình mang tính xây dựng và thông tin nhỏ hoặc thoáng qua. Mặc dù nó có thể đủ điều kiện là nhỏ, tôi nghĩ rằng nó sẽ hoạt động tốt, nếu không tốt hơn, như là một chỉnh sửa.
Scott Weldon

Tôi đã chơi với nó một chút và tôi khá thích nó mặc dù nó có vẻ bị ảnh hưởng khi tốc độ dữ liệu cao.
stsquad

0

Tôi đã đọc rằng nếu bạn đặt khóa phông chữ toàn cầu thành không, bạn cũng sẽ thấy cải thiện tốc độ

(global-font-lock-mode -1)

và có thể

(setq jit-lock-defer-time 0.05)

sẽ cải thiện tốc độ cuộn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.