ログファイルを解析して、フォーマットされた結果を出力しようとしました。
結果ファイルが作成されますが、スクリプトを実行した後は空です。ログファイル(カラムのカスタム名)の解析
ソースログファイル:
2011-07-08 14:34:40.609 Ber 8 [R: 1] Http -> GET http://test.com:80/api/test?__crd=78F5WE6WE
2011-08-08 12:34:51.202 Inf 9 [R: 1] Http <~ GET http://TEST.com:80/api/gs?__crid=7B9790431B8 [304 Not Modified] [11.774 ms]
2011-08-08 15:38:52.166 War 8 [R: 33] [Excn][Type:Api][Err:300][HTTPStatus:NotFound][Message:PCNDLS_. ISE Account : 111][CorrId:hvukyhv78r5564]
Write-Host 'Hello! My Name is test !'
$Files = Get-ChildItem C:\log\1\* -Include *.log
New-Item -ItemType file -Path C:\log\result.txt –Force
foreach ($File in $Files)
{
$StringMatch = $null
$StringMatch = select-string $File -pattern "[Exception]|[304 Not Modified]"
if ($StringMatch) {out-file -filepath C:\log\result.txt -inputobject $StringMatch }
$regex = 'Line\s+(\d+):\s+([^;]+);([^;]+);([^;]+);(.+)'
[regex]::Matches($StringMatch, $regex) | ForEach-Object {
[PsCustomObject]@{
ID = $_.Groups[1].Value
Time = $_.Groups[2].Value
Status = $_.Groups[3].Value
URL = $_.Groups[4].Value
Message = $_.Groups[5].Value
}
}
}
':
それとも、あなただけのこの操作を行うことができ、オブジェクトを必要としないID:下記の例を試してみてください\ [Except \] | \ [304 Not Modified \] "'それぞれの反復で結果を上書きする: '-Append'を使うかもしれないswitch ...とにかく、ブレークポイントを設定してコードをステップ実行して、PowerShell ISEでスクリプトをデバッグし、変数を調べます。 – wOxxOm
ソースログには '305 not modified'と表示されますが、あなたのコードは' 304 not modified'を探します。 'foreach(){}'はパイプラインに出力しません。出力を放棄します。あなたのコードはログ内の1行を探しますが、必要な出力には前の行の 'crd'情報が必要であり、' HTTPStatus'と 'Message'は後続行から' [Select-String -Context' ](https://technet.microsoft.com/library/hh849903.aspx)、生成するMatchInfoオブジェクトの.Contextプロパティを参照してください。 wOxxOm 感謝@ – TessellatingHeckler
が、wOxxOm @多分私のフィルタが間違っているこの((TessellatingHeckler 感謝@ –