我有一個日誌文件列表,這些日誌文件每天都在00:00:00創建,所以每天都會記錄在一個單獨的日誌文件中。 4日誌文件由於4種不同的原因每天都會創建,我必須遍歷它們並選擇錯誤消息。搜索文件中的某些字符串,而不循環遍歷內容
日誌文件有以下結構:
07.11.2016 12:00:41 Flag: Mandant=1, Modul=V, Pool=5
07.11.2016 12:00:41 Verarbeiten: M1, V, Pool 5, Dok 526198(), DokTyp 3, Skript BU-CO110.FF, Drucker 97
07.11.2016 12:00:41 fataler Fehler SalDocPoolItem_Process(5,): Err-226/VER-Dokument nicht gefunden: 0
07.11.2016 12:00:57 Flag: Mandant=1, Modul=V, Pool=5
07.11.2016 12:00:57 Verarbeiten: M1, V, Pool 5, Dok 526198(), DokTyp 3, Skript BU-CO110.FF, Drucker 97
07.11.2016 12:00:57 fataler Fehler SalDocPoolItem_Process(5,): Err-226/VER-Dokument nicht gefunden: 0
07.11.2016 12:01:13 Flag: Mandant=1, Modul=V, Pool=5
07.11.2016 12:01:13 Verarbeiten: M1, V, Pool 5, Dok 526198(), DokTyp 3, Skript BU-CO110.FF, Drucker 97
07.11.2016 12:01:13 fataler Fehler SalDocPoolItem_Process(5,): Err-226/VER-Dokument nicht gefunden: 0
如你孤單看到在每塊底部的消息「fataler fehler」,所以我需要這整個塊進入一個數組,然後通過簡單的電子郵件將所有日誌文件的所有「fleler Fehler」塊發送到一起。
現在我基本上有代碼,但是這段代碼有一個錯誤,或者需要超過10分鐘才能執行,因爲我在開始寫這個問題前5分鐘運行它,但它還沒有完成。
目標:在所有的塊$FailArray
可變
你能告訴我一個更好的方法實現我的目標?我真的不喜歡使用get-content
兩次,因爲我覺得這是沒有必要的,我敢肯定有一個更好的解決了這個比我:
# Prepare Array
$FailArray = @()
# Search for Log Files
$a = gci "C:\path" -filter *.log | ? { $_.LastWriteTime -ge (get-date).AddDays('-1') }
# Loop over Log Files
$a | % {
# Are there errors in the log?
$x = get-content $_.FullName | ? { $_ -like "*Fehler*" }
# If there are errors in the block, get the "time stamp" of the Block, like 12:00:57
if ($x) { $y = $x | % { $_.split(' ')[1] } } else { return }
# Search the whole block, depending on the timestamp
$z = get-content $_.FullName | ? { $_ -like "*$y*" }
# Add found blocks to FailArray
$FailArray += $z
}
更多: 有時,塊的第一條消息有時間戳1秒不同於這樣的其他人 - 是否有可能仍然得到整個塊不知何故? (只是一個不錯的,沒有必要)
07.11.2016 12:00:24 Flag: Mandant=1, Modul=V, Pool=5
07.11.2016 12:00:25 Verarbeiten: M1, V, Pool 5, Dok 526198(), DokTyp 3, Skript BU-CO110.FF, Drucker 97
07.11.2016 12:00:25 fataler Fehler SalDocPoolItem_Process(5,): Err-226/VER-Dokument nicht gefunden:
有多大的日誌文件? – vonPryz
@vonPryz非常小 - 在45 KB到1600 KB之間 – SimonS