なんかいい方法ねーのかなーー!?!?
どうしたの?
俺が作ったプログラムをテストしてるんだけど
そいつのログファイルを開いて見たいんだよな。
だけど、そいつが1秒に1回ぺースで書き込みするからさ
開いちゃうと書き込みエラーになっちまうんだよ。
「開かれてるので書き込みできません」って。
コピーして開けばいんじゃない?
それでもいんだけどよお。。
なんかもっと賢いやり方ねえのかなあと思ってさあ!
PowerShellのGet-Contentでファイルの中身が見れるよ。しかもプロパティを付ければ自動で更新してくれるから、リアルタイム監視できるんだ。
そうなのか!!
詳しく教えてくれよおおーーー!!!
Get-Contentでログファイルをリアルタイム監視する方法
以下のコマンドで実現可能です。
>Get-Content -Path “C:\work\TestScript\log.txt” -Tail 10 -Wait
Get-Contentはファイルを開いて中身を表示するコマンドレットです。
UNIX系だと「cat」と同じですね。
これに「-Wait」を付けると、ファイルに追記がされたタイミングでPowerShellの画面も更新してくれるので、リアルタイム監視ができるという訳です。
「-Tail」は、最初表示するときに、そのファイルの下から何番目を表示するかを指定するためのプロパティです。
具体例
例えば、以下のようなコマンドレットを実行しているとしましょう。
While($true){
(Get-Date).ToString("yyyy/MM/dd/HH:mm:ss") | Out-File "C:\work\TestScript\log.txt" -Append
sleep -Seconds 1
}
「 C:\work\TestScript\log.txt 」に対して、1秒ごとに”yyyy/MM/dd/HH:mm:ss”形式で日時を追記していきます。
このファイルを直接開くと1秒後には書き込みエラーになってしまいますが(読み取り専用で開く必要がある)、先ほどのGet-Contentコマンドレットであれば、中身をのぞくことができます。
⇩このような形になります⇩
なるほどなーー!
Waitをつけることでファイルに追記されても常に更新してくれるってわけか!いいなこれ!!
本当はログ出力するプログラム側でテキストを読み取り専用でしか開けないように制御するべきなんだけどね。
それができない場合は、この方法で中身を見ることができるよ。
最近のコメント