【Python】ログファイルから文字列があるメッセージを抽出して別ファイルに書き込むプログラム

ログファイルで大量のログがある場合、毎回検索してある一定のメッセージを抽出するのがめんどくさいので、Pythonで取得したログファイルからある一定の文字列を抽出し、別のファイルに書き込むプログラムを作成しました。

「Python」ログファイルから特定の文字列を抽出するプログラム

今回は以下「test.log」から「エラー 」という文字列を抽出するプログラムとなります。
プログラムの流れは以下のようになります。

  1. 「test.log」から「エラー 」という文字列のメッセージ行を抽出
  2. 抽出したメッセージをCSVファイルに書き込む。書き込んだCSVファイル名に日時を追加
  3. 抽出元の「test.log」は「log_old」フォルダ配下に移動し、ファイル名に日時を追加

プログラムコード

find.py

import shutil
from datetime import datetime

now = datetime.now()

# test.logログから「エラー 」という文字列を抽出
with open('test.log', 'r', newline='') as f, \
        open('test_find_' + now.strftime('%Y%m%d_%H%M%S') + '.csv', 'w') as o:
        lines = f.readlines()
 
        for line in lines:
            if line.find('エラー ') >= 0:
                print(line[:-1], file=o)
 
print('「test_find.csv」への書き込み完了')

shutil.move('./test.log', './log_old/test_' + now.strftime('%Y%m%d_%H%M%S') + '.log')

print('「test.log」を移動')

実行結果

> python find.py

上記プログラムを実行後以下のファイルが作成されます。

  • test_find_20200713_200632.csv
  • test_20200713_200632.log ※「log_old」フォルダ配下

ファイルの移動と、ファイルに日付を付けるモジュールについての詳細は以下を参照ください。

ファイルの移動(move)はこちらの記事を参照

dateモジュールの使い方はこちらの記事を参照

以上がログファイルからある一定の文字列を含むメッセージを抽出するプログラムとなります。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUT US
げんき☆ひろき
インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!