0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JSON形式ログから特定キーの値だけをPowerShellで抜き出す

0
Posted at

要件

Windowsサーバで稼働し、JSON形式でログを出力するシステムにてトラブル発生時、時刻とエラー発生ファイルの一覧を作成したい。しかし、該当システムではエラー要因や警告レベルなど不要な値が含まれる。また、セキュリティの観点からシステムが存在する系から解析用の環境へのファイル移行は認められず、外部ソフトの導入も即座に行うことはできない。
そのため、Windows標準機能であるPowerShellにてJSONファイルの解析を行いたい。

成果物(例)

json_read.ps1
Set-Location (ログファイル配置ディレクトリ)
$jsonContent = Get-Content -Path "log.json" -Raw -Encoding UTF8
$jsonObject = ConvertFrom-Json $jsonContent
Write-Output $jsonObject | Select-Object (表示したいキー1), (表示したいキー2),... | Format-list

※外部ファイルの読み込みはSet-ExecutionPolicyなどで別途許可する必要があるため、セキュリティ上の懸念がある場合は注意

説明

Set-Location (ログファイル配置ディレクトリ)

後述のファイル指定時にフルパスを入力してもよいがログ分析の場合複数のファイルを読み込むことも多いため、デフォルトパスとしてログ配置パスを設定

$jsonContent = Get-Content -Path "log.json" -Raw -Encoding UTF8

変数jsonContentにログファイルを読み込み。GetContentコマンドレットを用いてログ全体を読み込み。出力日時などの不要な行がある場合は、この時弾くとよい。

$jsonObject = ConvertFrom-Json $jsonContent

ConvertFrom-Jsonコマンドレットを用いて読み込んだログテキストをJSONオブジェクトに変換。

Write-Output $jsonObject | Select-Object (表示したいキー1), (表示したいキー2),... | Format-list

見やすさのため、Format-listコマンドレットを用いで表示を行う。Select-Objectで表示したいキーと値を抽出し、その結果をパイプラインで渡す。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?