Часто при диагностике каких-то ситуаций требуется просматривать журнал в ответ на какое-то действие или просто следить за новыми записями в нем с течением времени. В Linux для этого есть команда tail, например
Код:
tail -f /var/log/httpd/access.log
После чего вы сразу увидите на экране 10 последних строк лог-файла и все добавляемые позже в режиме реального времени.
Это удобно, теперь мы можем в одном окне выполнять какие-либо действия, а во втором сразу видеть реакцию на них.
Но в Windows, которая не предназначена быть нормальным сервером, тоже можно вывернуться.
Системные логи Windows хранятся в Журналах событий, которые имеют специализированный формат и хранятся в файлах .evt и .evtx, которые просмотреть подобным образом не удастся, но логи многих нормальных приложений, а не убогих поделий пионеров, написанных исключительно для Windows и на коленке, используют простой текстовый формат, а следовательно дают возможность работать с ними интерактивно.
В качестве аналога команды tail используем один из командлетов PowerShell:
Код:
Get-Content C:\OpenVPN\log\openvpn.log -Wait
Данная команда выведет на экран весь лог и продолжит отображать новые строки. Если лог большой, то это может быть неудобно, поэтому добавим в команду еще один параметр, в котором укажем какое количество последних строк мы хотим видеть, допустим пять:
Код:
Get-Content C:\OpenVPN\log\openvpn.log -Wait -Tail 5
Точно также мы можем перенаправить вывод команды в файл:
Код:
Get-Content C:\OpenVPN\log\openvpn.log -Wait -Tail 5 > S:\my_log.log
Или выполнить отбор по интересующему нас вхождению используя возможности РowerShell, например отберем только события AUTH_FAILED, включив в отбор также последние сто строк лога:
Код:
Get-Content C:\OpenVPN\log\openvpn.log -Wait -Tail 100 | where { $_ -match "AUTH_FAILED"}