Сценарий Powershell для извлечения зарегистрированных ошибок - PullRequest
1 голос
/ 18 июля 2010

У меня есть много файлов журналов, из которых я хочу извлечь отдельное сообщение об ошибке для конкретного средства записи трассировки.

Файлы журналов - это журналы SharePoint ULS.

Заголовки:Временная метка Категория области TID процесса EventID Корреляция сообщений уровня

Поэтому, учитывая конкретное имя процесса, я хочу все отдельные сообщения.

Если бы я использовал SQL, я написал бы что-то вроде этого:

выберите отличительное сообщение, откуда процесс, например, 'myprocessname'

Я бы хотел сделать это с powershell для всего набора файлов журналов.

Я считаю, что журнал ULS - это табуляция или пробелразделители.

Ответы [ 2 ]

2 голосов
/ 18 июля 2010

Возможно, вас заинтересует Microsoft Log Parser , который, по сути, позволяет запускать операторы, похожие на SQL, для набора файлов журналов. Вы также можете использовать это с Powershell. Вот несколько ссылок:

0 голосов
/ 18 июля 2010

Предполагая, что файл журнала не слишком большой, вы можете прочитать содержимое в Import-Csv следующим образом:

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

Я предполагаю, что разделитель - это вкладка, так как, скорее всего, любое сообщение будетсодержать пробелы.Если у вас есть данные журнала, вы можете использовать стандартные операторы запросов PowerShell, например, так:

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

Если файл журнала огромен (такой, что Import-Csv потребляет слишком много памяти), тогда я либо попробую использоватьLog Parser или используйте регулярное выражение и анализируйте журнал по одной строке за раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...