Я задал начальный вопрос here На что ответили, но когда я двигаюсь в своей задаче, у меня возникает другая проблема.Powershell - Мониторинг файла журнала в реальном времени Q2
Резюме: У меня есть файл журнала, который записывается через последовательное устройство. Я хочу отслеживать этот файл журнала для определенных строк (событий), и когда они происходят, я хочу записать эти строки в отдельный файл.
Выполнение этого единовременные делает то, что я ищу:
$p = @("AC/BATT_PWR","COMM-FAULT")
$fileName = "SRAS_$(Get-Date -format yyyy-MM-dd).log"
$fullPath = "C:\temp\SRAS\$fileName"
Get-Content $fullpath -tail 1 -Wait | Select-String -Pattern $p -SimpleMatch | Out-File -Filepath C:\temp\SRAS\sras_pages.log -Append
Проблема заключается в лог-файл получает штамп времени, шпатлевка сохраняет его как SRAS_yyyy мм dd.log. Поэтому, когда часы пройдут полночь, это больше не будет смотреть на правильный файл.
Я нашел this пост на SO, который именно то, что я хочу сделать, OP утверждает, что он работает на него. Я ее немного модифицировал для моих целей, но не записывает события, соответствующие нужные строки в sras_pages.log
Это «модифицированный» код:
while($true)
{
$now = Get-Date
$fileName = "SRAS_$(Get-Date -format yyyy-MM-dd).log"
$fullPath = "C:\temp\SRAS\$fileName"
$p = @("AC/BATT_PWR","COMM-FAULT")
Write-Host "[$(Get-Date)] Starting job for file $fullPath"
$latest = Start-Job -Arg $fullPath -ScriptBlock {
param($file)
# wait until the file exists, just in case
while(-not (Test-Path $fullpath)){ sleep -sec 10 }
Get-Content $file -Tail 1 -wait | Select-String -Pattern $p |
foreach { Out-File -Filepath "C:\temp\SRAS\sras_pages.log" -Append }
}
# wait until day changes, or whatever would cause new log file to be created
while($now.Date -eq (Get-Date).Date){ sleep -Sec 10 }
# kill the job and start over
Write-Host "[$(Get-Date)] Stopping job for file $fullPath"
$latest | Stop-Job
}
Если я исполняю только Get-Content
сегмент, который кода он делает именно то, что я ищу. Я не могу понять, в чем проблема.
TIA для консультации.
Итак, после полуночи вам нужно, чтобы ваш скрипт продолжал проверять предыдущий файл журнала, пока не будет создан новый файл журнала? – Bluecakes
Мне нужен скрипт для мониторинга текущего файла журнала, а не предыдущего дня. При изменении даты он должен начать мониторинг нового файла, который будет создан после возникновения события на последовательном порту. – k1162