2010-07-18 60 views
1

我有很多日誌文件,我希望從特定的跟蹤編寫器中提取不同的錯誤消息。Powershell腳本提取記錄錯誤

日誌文件是SharePoint ULS日誌。

的標題是: 時間戳 過程 TID 區 類別 事件ID 級別 消息 相關

所以給我希望所有的不同消息的具體進程名。

如果我是使用SQL我會寫這樣的事:

選擇從那裏過程就像「myprocessname」截然不同的消息

我想跨越了一整套日誌使用PowerShell來做到這一點文件。

我相信ULS日誌是製表符或空格分隔的。

回答

0

假設日誌文件是不是太龐大,你可以閱讀使用進口-CSV像這樣的內容:

$data = Import-Csv .\log.csv -Delimiter "`t" 

我假設分隔符是選項卡,因爲它我有可能任何消息都會包含空格。一旦你的日誌數據,您可以使用PowerShell的標準查詢操作符,像這樣:

$data | Where {$_.Process -eq 'processname.exe'} | Select Message -Unique 

如果日誌文件是巨大的(這樣導入-CSV吃了太多的內存),那麼我要麼嘗試使用日誌分析器或者使用正則表達式並一次解析一條日誌。

+0

此方法適用於多個文件,我可以將它們合併到這個嗎? – 2010-07-18 06:08:36

+0

當然,只需將文件指定爲Import-Csv例如'Import-Csv file1.csv,file2.csv,c:\ temp \ file3.csv ...'。 – 2010-07-18 07:36:21