Skip to content

TSV形式のログファイルをExcelで開く

はじめに

自宅で立てているNginxのログファイルは、TSV(タブ区切りのことだよ)フォーマットにしている。

nginx.confでログ項目の出力順などを工夫して、テキストエディタでログを開いた際にも見やすいように気を付けてはいるのだが、どうしても表計算ソフトを噛ませて、列ごとに値をフィルタしてログを確認したい、という場合があると思う。

この場合は素直にExcelを使うのが楽だ。どうせお金を払うなら、仕事以外にもExcelを活用しよう。

大した内容ではないのだが、いずれ操作を忘れてしまいそうなので、自分用のメモとして残しておく。

ログファイルを読み込みする

TSVフォーマットのテキストファイルをそのままExcelで開いても、望む結果は得られない。全てA列に表示されてしまう。

以下の通り操作する。

  1. メニューバーで「データ」を押下する
  2. 左側にある「テキストまたはCSVから」を押下する
  3. ファイル選択ダイアログで、読み込みしたいログファイルを選択する。
    ログファイルの拡張子を.logにしている場合は、右下のフィルターで「全てのファイル(*.*)」を選ぶこと。
  4. 専用の画面が開くので、「区切り記号」で「タブ」を選ぶ。
  5. 「読み込み」ボタンを押下する。

これで、見慣れたExcel表にログファイルを読み込みできる。

読込みした直後の状態

デフォルトだとこんな感じになる。タブで列が区切られているのが分かる。

元のTSVファイルには(ログファイルなので)ヘッダー行が無い。そのため、ExcelがデフォルトでColumnNの名前を付けている。

なお、サンプルとして読み込みしたログファイルは、アタックと見られるリクエストを仕分けたattack.logなのでおかしな内容になっている。httpでポート80に接続しようとして400エラーになっているリクエストなどがあり、滅茶苦茶である。

Excelの表を最新化する

無事に読み込みできたとはいえ、毎回この操作をするのはクッソ面倒臭いのでは?と思う。だが、Excelでは

「このファイルをこういうルールで開くよ」

と定義しているだけなので、ボタンを押すだけでExcelの表を最新化することができる。

  • メニューバーで「データ」から「すべて更新」を押下すると、最新の状態に更新してくれる。
  • わざわざメニューバーまでマウスを動かすのすら面倒ならば、表のデータ範囲のセルで右クリックし、「更新」を押下してもOK。

Excelファイルを保存すれば状態も保存できるので、毎回「テキストまたはCSVから」をやる必要はない。

列幅を固定にする

「すべて更新」を選んでリロードすると、その都度、列幅を変えていても列幅がリセットされてしまいイラッとする。余計なお世話である。

Excelがやってくれるお節介な列幅の自動調整を止める場合は、以下の通り操作すれば良い。

  1. 表のデータ範囲のセルで右クリックする。
  2. 右クリックメニューの「テーブル」から「外部データのプロパティ」を押下する。
  3. 「列の幅を調整する」のチェックを外す。

これがとても分かりにくかった。このメモ記事で一番書きたかったのはこれ。