我想解析一些大型的日誌文件來檢測編碼錯誤的發生。識別缺陷的方法是在不同的行上找到一系列字符串,並在中間加上日期。我在描述事情,所以張貼的例子可怕:解析包含2個字符串和其間的行的日誌文件
<Result xmlns="">
<Failure exceptionClass="processing" exceptionDetail="State_Open::Buffer Failed - none">
<SystemID>ffds[sid=EPS_FFDS, 50] Version:01.00.00</SystemID>
<Description>Lo
ck Server failed </Description>
</Failure>
</Result>
</BufferReply>
7/22/2017 8:41:15 AM | SomeServer | Information | ResponseProcessing.TreatEPSResponse() is going to process a response or event. Response.ServiceID [Server_06] Response.Response [com.schema.fcc.ffds.BufferReply]
我會通過多種日誌中搜索出該序列的多個實例:Buffer Failed
後面是Server_#
。 Server_#
可以是任何2位數字,並且永遠不會在同一行上。 Buffer failed
在找到Server_#
之前將不會重複。 中間的日期和時間,但猜測如果這是可能的,它也會被捕獲。
理想情況下,我覺得應該是這樣的,以另一個文件
Buffer Failed - none" 7/22/2017 8:41:15 AM [Server_06]
我已經嘗試了一些東西像
Select-String 'Failed - none(.*?)Response.Response' -AllMatches
,但它似乎並沒有跨線工作。
您的日誌文件是XML嗎?我建議'Import-CliXml' – TheIncorrigible1
如果你的文件是一個XML文件,使用XML命令而不是字符串命令。 http://www.tomsitpro.com/articles/powershell-read-xml-files,2-895.html – Manu
它不是一個XML文件,但即使它是我將無法使用任何第三方實用程序因爲文件所在的服務器對信用卡交易具有PCI合規性。我正在搜索的錯誤以XML格式報告到日誌記錄中,但日誌記錄不是XML我想只能將XML數據過濾到另一個文件中,然後嘗試在那裏通過它,如果這是唯一的解決方案,我可以拿出 –