Pythonでログから特定の文字列を含む行を抽出する

やりたいこと

  • log4j2で出力されたログファイルから特定の文字列を含む行を抽出したい
  • Python勉強中なのでPythonを用いる

作成したプログラム

import sys, re

# 入出力のパス
input_path = 'files/online.log'
output_path = 'files/result.txt'

# Grep検索対象
grep_target = 'AAAAA'

# ファイル読み込みとGrep
with open(input_path, mode='r') as f:
    lines = f.readlines()
    GREP_TARGET = [line for line in lines if grep_target in line]

# ファイル出力
with open(output_path, mode='w', encoding='utf-8') as f:
    f.write('Grep検索\n')
    f.writelines(GREP_TARGET)

ちょっとした解説

  • ログはfilesというフォルダを作って配置。そしてアウトプットも同じfilesに配置することにします。
  • Grep検索対象はgrep_targetという変数に用意しておきます。ここでgrep_target2など他の変数を用意して検索対象の文字列を増やして後続の処理もしてあげると複数の文字列を検索できます。
  • Grepの処理はPythonのリスト内包表記を用いて、検索対象文字列がある場合はGREP_TARGETという変数に格納します。
  • 出力部分はwritelines()で書き込んでいくだけです。

参考

その他

Djangoも勉強中なので、Djangoを使って簡単にWebアプリとして作ってみたいです。インプットやアウトプット、検索対象文字列も画面から指定する、とかできるともっと汎用性が出て良さそうです。