Используйте Out-gridview для отображения журнала

Я довольно новичок в сценариях powershell. Я хотел бы отобразить файл журнала в виде сетки, используя внешний вид сетки.

Допустим, у меня есть очень простой скрипт, как

$logFile = "logs\myCoolLogFile.log";
gc -wait $logFile | Out-GridView -Wait

Это отображает каждую строку в одной ячейке. Мой журнал формируется так:

LEVEL TIMESTAMP LOGGERNAME [THREAD]: MESSAGE

Каждая запись разделена одним или несколькими пробелами (но я могу легко изменить ее, чтобы разделить одним символом табуляции, если это было более подходящим). Сообщение может содержать дополнительные пробелы. Предыдущие записи никогда не содержат пробелов.

Я хотел бы иметь разные столбцы для LEVEL, TIMESTAMP и т.д. Но я не уверен, как этого добиться. Любая помощь приветствуется.

Редактировать: по запросу @jisaak, вот пример моего журнала с многострочным сообщением:

WARN    09:53:49.938    n.s.e.CacheManager  [StartStop-Thread]  Creating a new instance of CacheManager using the diskStorePath "C:\temp" which is already used by an existing CacheManager.
The source of the configuration was net.sf.ehcache.config.generator.ConfigurationSource$DefaultConfigurationSource@48666bf4.
The diskStore path for this CacheManager will be set to C:\temp\ehcache_auto_created_1461052429938.

Edit2: Теперь, когда я думаю об этом, я думаю, было бы приемлемо, если бы строки, которые не содержат достаточно столбцов, были бы пропущены вообще. Но мне нужна помощь и для такого поведения.

1 ответ

Решение

Вы можете использовать командлет ConvertFrom-Csv для преобразования вашего журнала:

$logFile = "logs\myCoolLogFile.log";
gc $logFile |  ConvertFrom-Csv -Delimiter ' ' | Out-GridView

Почему вы используете -wait включить Get-Content командлет?

Другие вопросы по тегам