「毎日のログを手作業でチェックするのが大変」
「報告資料の作成に時間を取られて開発が進まない」
こうしたお悩みをお持ちではないでしょうか?
本記事では、Pythonを使ってログを自動で解析し、グラフ付きのレポートを作成し、メールで送信するツールを一から開発する方法をご紹介します。
PandasとMatplotlib、そしてメール送信機能を組み合わせれば、誰でも簡単に業務の自動化が実現できます。
この記事を読めば、面倒な手作業から解放され、作業効率を飛躍的に向上させることができます。
ログ解析ツールとは?
結論
ログ解析ツールとは、サーバーやアプリの動作記録を自動で読み取り、異常や傾向を分析するプログラムです。
理由
特にWebサービスや業務システムでは、アクセス状況やエラー情報を把握するためにログが必須です。
しかし、それらを毎日手作業でチェックするのは大きな負担です。
具体例
たとえば、エラーログから「1日あたりのエラー発生数」や「エラー内容の種類別件数」を抽出すれば、
システム改善に活かせます。
ポイント
- ログを解析することで、問題の早期発見が可能
- 手作業の負担が軽減される
- データを可視化することで関係者への報告も簡単
使用するPythonライブラリ
結論
以下のライブラリを使います。すべて無料で導入できます。
使用ライブラリ一覧
- pandas:データ解析用ライブラリ
- matplotlib:グラフ作成ライブラリ
- smtplib・email:メール送信用の標準ライブラリ
- datetime:日付処理用
これらは pip で簡単に導入できます:
1 | pip install pandas matplotlib |
ログファイルの読み込みと前処理
結論
CSV形式のログファイルをpandasで読み取り、必要なカラムを抽出・整形します。
具体コード
1 2 3 4 5 6 | import pandas as pd df = pd.read_csv( "access_log.csv" ) df[ "datetime" ] = pd.to_datetime(df[ "datetime" ]) df[ "date" ] = df[ "datetime" ].dt.date error_df = df[df[ "status" ] > = 500 ] # ステータスコード500以上=エラー |
Matplotlibでグラフ作成
結論
エラー件数を日別に集計し、棒グラフで可視化します。
具体コード
1 2 3 4 5 6 7 8 9 10 | import matplotlib.pyplot as plt daily_error = error_df.groupby( "date" ).size() plt.figure(figsize = ( 10 , 5 )) daily_error.plot(kind = "bar" ) plt.title( "日別エラー件数" ) plt.xlabel( "日付" ) plt.ylabel( "エラー数" ) plt.tight_layout() plt.savefig( "error_graph.png" ) |
メールで自動送信する方法
結論
Python標準の smtplib
と email
を使えば、画像付きメールを送信できます。
具体コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import smtplib from email.message import EmailMessage msg = EmailMessage() msg[ "Subject" ] = "本日のログレポート" msg[ "From" ] = "your_email@example.com" msg[ "To" ] = "receiver@example.com" msg.set_content( "添付の画像をご確認ください。" ) with open ( "error_graph.png" , "rb" ) as f: msg.add_attachment(f.read(), maintype = "image" , subtype = "png" , filename = "error_graph.png" ) with smtplib.SMTP_SSL( "smtp.gmail.com" , 465 ) as smtp: smtp.login( "your_email@example.com" , "your_password" ) smtp.send_message(msg) |
完成形コード
以下は、すべての処理を一括で実行するコードです。
import pandas as pd
import matplotlib.pyplot as plt
import smtplib
from email.message import EmailMessage
# ログ読み込みと整形
df = pd.read_csv("access_log.csv")
df["datetime"] = pd.to_datetime(df["datetime"])
df["date"] = df["datetime"].dt.date
error_df = df[df["status"] >= 500]
# エラー集計とグラフ作成
daily_error = error_df.groupby("date").size()
plt.figure(figsize=(10, 5))
daily_error.plot(kind="bar")
plt.title("日別エラー件数")
plt.xlabel("日付")
plt.ylabel("エラー数")
plt.tight_layout()
plt.savefig("error_graph.png")
# メール送信
msg = EmailMessage()
msg["Subject"] = "本日のログレポート"
msg["From"] = "your_email@example.com"
msg["To"] = "receiver@example.com"
msg.set_content("添付の画像をご確認ください。")
with open("error_graph.png", "rb") as f:
msg.add_attachment(f.read(), maintype="image", subtype="png", filename="error_graph.png")
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as smtp:
smtp.login("your_email@example.com", "your_password")
smtp.send_message(msg)
まとめ
本記事では、Pythonで以下を自動化するツールを作成しました。
- ログファイルの読み込みと整形
- エラー集計とグラフ可視化
- メールでの自動送信
このツールを使えば、日々の報告業務が大幅に効率化されます。
応用として、PDF出力やSlack通知への展開も可能です。
ぜひ、あなたの業務にも取り入れてみてください。