2016-04-19 15 views
1

私はpowershellスクリプトを初めて使っています。私はアウトグリッドビューを使用してグリッドビューにログファイルを表示したいと思います。アウトグリッドビューを使用してログを表示

のは、私が

$logFile = "logs\myCoolLogFile.log"; 
gc -wait $logFile | Out-GridView -Wait 

これは、単一のセル内の各行を表示するような非常に簡単なスクリプトがあるとしましょう。

LEVEL TIMESTAMP LOGGERNAME [THREAD]: MESSAGE 

各エントリは、1つまたは複数のスペースで区切られている(しかし、私はそれがより適していた場合は、1つのタブ文字で分離することが簡単に変更できます):私のログは次のようにフォーマットされています。メッセージに追加のスペースが含まれている可能性があります。前のエントリにはスペースは含まれません。

LEVELTIMESTAMPなどの異なる列を使用したいと思いますが、これを達成する方法がわかりません。どんな助けもありがとうございます。

編集:として@jisaakが要求されたが、ここでは、複数行のメッセージと私のログの例です:

WARN 09:53:49.938 n.s.e.CacheManager [StartStop-Thread] Creating a new instance of CacheManager using the diskStorePath "C:\temp" which is already used by an existing CacheManager. 
The source of the configuration was net.sf.ehcache.[email protected]48666bf4. 
The diskStore path for this CacheManager will be set to C:\temp\ehcache_auto_created_1461052429938. 

EDIT2:今、私はそれについて考えることを、私はそれを推測します十分な数の列を含まない行がすべてスキップされる場合は、許容されます。しかし、私はその行動にも助けが必要です。

+0

まあ、正規表現を使ってログファイルを解析できますが、ログの出力を制御したり、xmlやjsonフォーマッタを使用したりできますか? –

答えて

1

あなたのログを変換するConvertFrom-Csvコマンドレットを使用することができます。

$logFile = "logs\myCoolLogFile.log"; 
gc $logFile | ConvertFrom-Csv -Delimiter ' ' | Out-GridView 

は、なぜあなたはGet-Contentコマンドレットに-waitスイッチを使用していますか?

+0

ファイルが更新されると、これがgridviewの内容を更新するために必要だと思っていました。これについて間違っていますか? – samjaf

+0

ああ、そうです。非常に良い - didntはそれを知っていた! –

+0

あなたのソリューションは、魅力のように機能します(ログフォーマットを区切り文字としてタブ文字に変換しました)。しかし、ログファイルには複数行のメッセージが含まれることがあります。新しい改行はファイルに先頭のタブ文字を付けずに印刷されるため、最初の列として認識され、「レベル」列内に印刷されます。どのようにこれを避けることができますか? – samjaf

関連する問題