Apakah ada mode tampilan log yang layak untuk file log besar?

11

Beberapa file log yang saya kerjakan cukup besar (> 200MB) tetapi akan lebih baik untuk menjelajahinya di Emacs. Saat ini secara default Emacs mencoba mengaktifkan mode log4j yang memperlambat semuanya. Yang benar-benar saya butuhkan adalah pemirsa ringan yang:

  • mode undo dinonaktifkan
  • dapat kembali secara otomatis ketika file log diperbarui
  • dapat mengikuti ekor log ketika pembaruan

Idealnya akan menyenangkan hanya memetakan sebagian kecil dari file log saat Anda menelusuri. Apakah ada mode log semacam itu?

stsquad
sumber
3
Bukan jawaban emacs, tetapi saya telah menemukan bahwa menggunakan tmux dengan ekor sederhana -f telah memberi saya solusi terbaik, menggunakan tmux akan memungkinkan Anda untuk menghentikan log dan mencari di sekitarnya menggunakan emacs seperti binding. File log saya biasanya di atas 2gb dan berjalan dengan baik. Atau Mx shell + tail -f + no font lock adalah solusi yang bagus.
Jordon Biondo
1
Tidak persis apa yang Anda minta, tetapi mungkin M-x fundamental-modeakan menjadi peningkatan dari mode log4j dalam hal kecepatan.
legoscia
@legoscia: ya saya sudah secara manual beralih ke mode teks yang membantu.
stsquad
Apa yang biasanya saya lakukan dalam hal ini: mirip dengan apa yang disarankan @JordonBiondo, kecuali saya menggunakan pager bukan tail, yaitu cat file.log | less. Ini bermanfaat karena dapat menggunakan semua perintah pager, seperti mencari dan menampilkan jumlah baris sekaligus.
wvxvw
Juga, ini: github.com/mbriggs/emacs-pager Saya menemukan saya telah menandainya, tetapi tidak menggunakan ...
wvxvw

Jawaban:

7

Inilah yang saya gunakan. Ini menonaktifkan semua yang mungkin memperlambat emacs, membuat buffer hanya membaca, dan mengatur mode auto-revert-tail-mode:

;; 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)

Jika Anda tidak ingin emacs berlaku seperti ini untuk semua buffer mode auto-revert-tail-Anda dapat menambahkan tanda centang untuk memastikan file benar-benar berakhir dengan .log di bagian atas etc-log-tail-handler, atau gunakan apa pun kriteria lain yang Anda suka.

Joseph Garvin
sumber
2

Saya telah menggunakan https://github.com/re5et/itail dengan sukses selama beberapa tahun.

Ini adalah mode ekor yang terbuka di buffernya sendiri.

huntar
sumber
Selain itu saya telah mengadaptasi ESHELL cukup untuk kebutuhan saya untuk menjalankan Leiningen dan alat membangun CLI lainnya dengan cukup baik sehingga saya dapat melihat hasil pengembangan saya dengan mudah dalam buffer.
huntar
Alih-alih berkomentar , silakan edit posting Anda sendiri untuk memasukkan informasi tambahan. (Setelah Anda melakukannya, Anda dapat menghapus komentar Anda.)
Scott Weldon
@ScottWeldon Saya pikir informasi tambahan lebih tepat sebagai komentar
huntar
Komentar untuk klarifikasi, kritik konstruktif, dan informasi minor atau sementara. Meskipun bisa memenuhi syarat sebagai minor, saya pikir itu akan berfungsi dengan baik, jika tidak lebih baik, sebagai edit.
Scott Weldon
Saya sudah bermain dengan ini sedikit dan saya sangat menyukainya meskipun sepertinya akan menderita ketika data rate tinggi.
stsquad
0

Saya telah membaca bahwa jika Anda mengatur penguncian font global ke nol Anda juga harus melihat peningkatan kecepatan

(global-font-lock-mode -1)

dan mungkin

(setq jit-lock-defer-time 0.05)

akan meningkatkan kecepatan gulir

Darryl Hebbes
sumber