【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)はこちらの記事を参照

【Python】ファイルやフォルダの移動をする「shutil.move関数」

2020年6月16日

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

【Python】日時を扱う「datetime」モジュールの機能

2020年1月5日

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


関連記事


コメントを残す

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

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

ABOUTこの記事をかいた人

blank

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