技術系

PowerShell+tailでログファイルのエラー監視を行う

PowerShellでtail(※)ができるのを知っていますか?それを利用して今回はログファイルのエラー監視を作ってみました。

※tailは新規でログに書き込まれた際、表示してくれる機能。Linux系では標準実装されており、WindowsのPowerShellもVer3から実装されています。

 

PowerShellでログ監視を行う

まずはソースから。

 

イベントログにログソース名を登録

初回のみ、以下のコマンドを実行しイベントログのログソース名を作成します。

 

ApplicationをSystemに変えればシステムログに出力できます。

LogKanshiがログソース部分です。

 

 

PowerShellのログ監視ソース

test.logを監視し、特定の文言(ここではAlert Keyword)が含まれていたらイベントログにエラーを出力します。

 

 

ソース解説

覚え書きとしてソース解説しておきます。

 

Get-Content -Path "C:\work\test.log" -Wait -Tail 0

監視対象のログファイル指定と、tailコマンド。tail 0は最終行から0行目を意味する。0を10にすると最終行から10行目まで遡って読み込みます。

 

 

ForEach-Object { If($_ -like "*Alert Keyword*")

監視対象のキーワードを指定。すべてのログを監視することはあまり無いかなと。インフォメーションのログ系はチェックしませんよね?

 

 

{ Write-EventLog -LogName Application -Source LogKanshi -EventID 999 -EntryType Error -Message "エラー(TEST)が発生しました" } }

イベントログに出力させる。文言などは適宜変更が可能。

 

 

作成した経緯

過去にVBSでファイルのエラーログ監視を作ったことがありますが、こんなデメリットがありました。

  • 500ステップぐらいになった
  • ソースが僕しか読めない
  • リアルタイムでの監視ができない
    ※タスク管理で5分毎監視など

 

 

応用:関数化して別の処理も

イベントログだけでなく、関数を呼び出して引数としてログの内容を渡すことも可能です。

 

 

$outer=$ はネストを2段階にすると $_ が使えないから。一旦変数に入れるとネスト後の関数呼び出し部で $_ が使えるようになる。

ややこしいので、もっと良い方法があれば教えてください。

 

 

著作権フリーです

自分用のメモなので、再販しなければコピペして持って行ってください。

再販したらオコです。

気に入ってくれたらSNSでシェアしてください。

 

社畜系インフラエンジニアブログのTOPへ戻る

コメントもらえたら泣いて喜びます!
  • この記事を書いた人
  • 最新記事
kanade

kanade

IT関連の仕事に従事し気付けば10余年。好きな言葉は「よくわからないけど動いてる」です。どうにかして生き残りたいアラフォーのIT系エンジニア。

-技術系
-

Copyright© インフラエンジニアブログカナデ , 2020 All Rights Reserved.