Emacs で ログ解析をするための便利機能まとめ

    はじめに

    前回の記事のつづき.

    Java 開発で, log4j のログをみる機会がこれから増えそうだ.

    ログといっても所詮はテキストなので, Emacs を使いたい. そこで, ログ解析に便利そうな, 使えそうな機能をまとめてみた.

    とくに, Java の log4j 専用というわけではなく, どんなテキストログの解析にも応用できればいいな.

    閲覧

    Read Only Mode

    ログなので, Read Only でファイルを開きたい.

    • M-x toggle-read-only (C-x C-q) で現在開いているテキストを 読み取り専用にすることができる

    • M-x find-file-read-only で読み取り専用で開くことができる. 解除は, toggle-read-only で.

    参考:

    (add-to-list 'auto-mode-alist '("\\.log$" . read-only-mode))

    Tramp

    ログはサーバからダウンロードする. Emacs からサーバに直接乗り込んで開くためには, Tramp を利用する.

    tail -f 的な

    リアルタイムログ解析のためには, M-x auto-revert-tail-mode を利用. これで, tail -f のようにファイルを更新することが可能になる.

    検索

    複数ファイル検索: grep/ ag / helm-ag

    検索は grep が基本.

    最近は, grep よりも高速な検索ができる ag というものもある.

    さらには, 絞り込みを helm I/F から利用するための helm-ag もある.

    単一ファイル検索: helm-swoop

    helm-swoop を利用すると, 一文字打ち込む度に検索が走る. ログサイズが小さいときや, 単一ファイルならば, grep よりも使いやすい.

    インクリメンタル検索

    isearch (C-s) が基本.

    インクリメンタル検索である isearch と helm-swoop をつなぐ, ace-isearch というものもある.

    ブックマーク/ ハイライト

    Bookmarks をハイライト

    行をハイライトできる.気になる行に色をつける.

    本当は移動用なのだけれども, 色付けとして利用.

    helm-all-mark-rings

    C-SPC でマークをした場所を覚えておいて, helm で選択してジャンプできる.

    (global-set-key (kbd "M-SPC") 'helm-all-mark-rings)

    シンボルをハイライト

    highlight-symbol/auto-highlight-symbol

    シンボルをハイライトできる.気になる単語に色をつける.

    (require 'auto-highlight-symbol-config)
    (require 'highlight-symbol)
    (setq highlight-symbol-colors '("DarkOrange" "DodgerBlue1" "DeepPink1"))
    
    (global-set-key (kbd "<f3>") 'highlight-symbol-at-point)
    (global-set-key (kbd "M-<f3>") 'highlight-symbol-remove-all)

    hl-anything

    永続的に, ハイライトを保持することが可能になる.

    以下の記事の解説が詳しい.

    (require 'hl-anything)
    (hl-highlight-mode 1)
    
    (global-set-key (kbd "<f2>") 'hl-highlight-thingatpt-local)
    (global-set-key (kbd "M-<f2>") 'hl-unhighlight-all-local)

    Java

    以下参照.