Использование парсера журналов для анализа логов в разных папках - PullRequest
10 голосов
/ 09 марта 2012

Я недавно начал использовать Log Parser с визуальным интерфейсом.

Журналы, которые я хочу проанализировать, пришли из IIS и связаны с SharePoint.Например, я хочу знать, сколько людей посещало определенные веб-страницы и т. Д.

И похоже, что IIS создает журналы в разных папках (я не знаю почему), и каждый день появляется новый журналфайл в другой папке.

Итак, мой вопрос: можно ли подойти ко всем этим файлам в разных папках?

Я знаю, что вы можете использовать From-clause, ставить разные папки, но этоэто слишком сложно, особенно если в будущем будут добавлены новые папки.Цель состоит в том, чтобы создать один скрипт, который будет выполняться.

Так, например, в журнале папок с именем LogFIles , у меня есть папки folder1, folder2, folder3, folder4 и т. Д., И в каждомв папке есть файлы журнала log1, log2, log 3, logN и т. д.

Итак, мой запрос должен выглядеть следующим образом: Select * FROM path/LogFiles/*/*.log, но анализатор журнала не принимает его, так как его реализовать?

Ответы [ 5 ]

20 голосов
/ 22 апреля 2013

Вы можете использовать параметр -recurse при вызове logparser.

Например:

logparser file:"query.sql" -i:IISW3C -o:CSV -recurse

, где query.sql содержит:

select *
from .\Logs\*.log

и в моемВ текущем каталоге есть каталог «Журналы», который содержит несколько подкаталогов, каждый из которых содержит файлы журналов.Такие как:

\Logs\server1\W3SVC1
\Logs\server1\W3SVC2 
\Logs\server2\W3SVC1 
\Logs\server2\W3SVC2 
etc.
5 голосов
/ 23 марта 2012

Вы можете объединить журналы, а затем запросить объединенный журнал

, что мне нужно сделать, это

LogParser.exe -i:w3c "select * into E:\logs\merged.log from E:\logs\WEB35\*, E:\logs\WEB36\*, E:\logs\WEB37\*" -o:w3c
1 голос
/ 01 марта 2017

Я предпочитаю PowerShell, как это:

Select-String C:\Logs\diag\*.log -pattern "/sites/Very" | ?{$_.Line -match "Important"}
0 голосов
/ 24 июня 2015

Проверьте это: https://stackoverflow.com/a/31024196/4502867 с помощью powershell для рекурсивного получения элементов файла в подкаталогах и их анализа.

0 голосов
/ 02 апреля 2014

В справке LogParser не указан параметр -recurse, поэтому я не уверен, что он все еще поддерживается. Однако вот что я сделал, чтобы обойти это:

Допустим, вы используете следующую команду для запуска logparser -

logparser "SELECT * INTO test.csv FROM 'D:\samplelog\test.log'" -i:COM -iProgID:Sample.LogParser.Scriptlet -o:CSV

Затем просто создайте пакетный скрипт, чтобы «рекурсировать» через структуру папок и анализировать все файлы в нем. Пакетный скрипт, который делает это, выглядит так -

echo off
for /r %%a in (*) do (
    for %%F in ("%%a") do (
        logparser "SELECT * INTO '%%~nxF'.csv FROM '%%a'" -i:COM -iProgID:Sample.LogParser.Scriptlet
        REM echo %%~nxF
    )
)

Запустите его по пути, где находятся файлы журнала, которые нужно проанализировать. Кроме того, его можно настроить так, чтобы он разбивал все проанализированные журналы в одном файле с помощью оператора append (>>).

Надеюсь, это поможет.

...