システム運用やトラブルシューティングでは、ログファイルからエラー行だけを素早く抽出したい場面が頻繁にあります。
PowerShellを使えば、大量のログファイルからでも効率よくエラー情報を抜き出すことが可能です。
この記事では、PowerShellを使ったログ解析の基本から、実務で役立つ応用例までをわかりやすく解説します。
ログファイルからエラー行を抽出する基本
最もシンプルな方法は Select-String コマンドレットを使う方法です。
|
1 |
Select-String -Path "C:\logs\app.log" -Pattern "ERROR" |
ポイント
-
-Path:対象のログファイル -
-Pattern:検索したい文字列(例:ERROR)
このコマンドを実行すると、ログファイル内の 「ERROR」を含む行のみ が表示されます。
大文字・小文字を区別せずに抽出する
ログによっては error や Error など表記が異なる場合があります。
その場合は -CaseSensitive を使わずに検索すればOKです(デフォルトは区別しません)。
|
1 |
Select-String -Path "C:\logs\app.log" -Pattern "error" |
複数キーワード(ERROR / WARN など)をまとめて抽出
エラーだけでなく警告も一緒に確認したい場合は、正規表現が使えます。
|
1 2 |
Select-String -Path "C:\logs\app.log" -Pattern "ERROR|WARN"<code class="whitespace-pre! language-powershell"> |
これで ERROR または WARN を含む行をまとめて抽出できます。
複数のログファイルを一括で検索する
フォルダ内のすべてのログを対象にする場合は、ワイルドカードを使います。
|
1 2 |
Select-String -Path "C:\logs\*.log" -Pattern "ERROR"<code class="whitespace-pre! language-powershell"> |
実務で便利な場面
-
日付ごとに分かれたログファイル
-
バッチ処理や夜間処理のログ確認
抽出結果をファイルに保存する
結果を画面表示だけでなく、別ファイルに保存したい場合はリダイレクトを使います。
|
1 2 |
Select-String -Path "C:\logs\app.log" -Pattern "ERROR" | Out-File "C:\logs\error_only.log" |
行番号付きでエラーを確認する
どの行でエラーが発生したのかを把握したい場合は、LineNumber が便利です。
|
1 2 3 |
Select-String -Path "C:\logs\app.log" -Pattern "ERROR" | Select-Object LineNumber, Line<code class="whitespace-pre! language-powershell"> |
よくあるログ形式(日時+レベル)の例
以下のようなログ形式でも問題なく対応できます。
|
1 2 |
2025-01-15 10:32:01 INFO 処理開始 2025-01-15 10:32:05 ERROR データ取得失敗 |
応用:直近のログだけを対象にする
ファイルサイズが大きい場合は、Get-Content -Tail を組み合わせると高速です。
|
1 2 3 |
Get-Content "C:\logs\app.log" -Tail 500 | Select-String "ERROR"<code class="whitespace-pre! language-powershell"> |
直近500行だけを対象にエラー抽出できます。
まとめ
PowerShellを使えば、ログファイルからのエラー抽出は非常に簡単です。
-
Select-Stringを使えば1行で検索可能 -
複数ファイル・複数条件にも対応
-
出力の保存や行番号確認も容易
日々の運用や障害対応の効率化に、ぜひ活用してみてください。

